반응형
- C09이차배열
- C0906일차원메모리구조
- C0906개념01_메모리구조
package C0906일차원메모리구조;
import java.util.Arrays;
/*
1. 문서 전체의 코드가 data영역에 로드
2. main() 메서드 로드 = stack
3. main() 메서드 내에 있는
코드를 첫 줄부터 위에서 아래로
순차적으로 실행하면서 로드
[ 데이터 영역을 구분해서 저장]
(1) stack(=스택)
(2) heap(=힙)
(3) static(=스태틱)
[주소 복사]
= new 는 값 복사가 아니라 주소 복사가 이루어진다.
int a= 10; 과 int[] arr = new int[3] 은 완전히 다르다.
*/
public class C0906개념01_메모리구조 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int[] arr = new int[3];
System.out.println(arr);
arr[0] = 200;
System.out.println(Arrays.toString(arr));
// 아래 배열도 위와 마찬가지로 new int[3] 이 생략되었을뿐 원리는 똑같다.
int[] arr2 = {10, 20, 30};
}
}
- 메모리
- 1. stack
- 함수로만 생기는 것
- 제일 처음에 main이 실행이 된다.
- public static void main(String[] args)
- 함수 안에 있는 것은 지역변수라고 한다.
- int a = 10;
- int b = 20;
- heap에서 new가 되서 3칸이 생기고 그 다음에. arr이 만들어 진다.
- arr에도 1000이 들어온다.
- System.out.println(arr); 출력을 하면 1000이 출력이 된다.
- heap에 있는 주소를 출력하는것
- 16진수로 표현이 된다.
- arr[0] = 200;
- arr[0] 뜻이 2개이다.
- arr로 가서 [0]여기로 가라.
- 2번 가는것
- int [ ] arr[2] = {10,20,30};
- arr[2]는 2000이 저장된다. 주소가 저장된다.
- 2. heap
- 여기는 new만 생기는 것.
- new int[3]; 이 먼져 된다. 3칸이 생긴다.
- = new는 주소를 저장하는 거다.
- 3칸의 1번째의 주소가 1000이면
- arr[0] = 200;
- 1번 이동. 먼저 new 3칸으로 온다.
- 2번 이동. arr[0] 여기로 온다.
- arr[0]에 200을 넣어라.
- 또 다른 new . int [ ] arr2 = { 10, 20, 30};
- 배열 안에. 10, 20, 30,
- 3. 전역 static
- class,문자열 , string, 주석
- 공간이 나눠져 있다.
- 핵심!
- 처음부터 만들어져서 끝까지 살아있는 메모리이다.
- 1. stack


- C0906개념02_메모리구조
package C0906일차원메모리구조;
public class C0906개념02_메모리구조 {
public static void main(String[] args) {
/*
1. 일반 변수 = 값(정수,실수,문자,boolean)
2. 주소 변수 = 배열
*/
int a = 0;
int[] arr = { 87, 100, 24, 11, 79 };
// int[] arr = new int[5];
// arr[0] = 87;
// arr[1] = 100;
// arr[2] = 24;
// arr[3] = 11;
// arr[4] = 79;
arr[1] = 600;
int[] temp = arr;
temp[1] = 0; // arr[1] = 0;
for (int i = 0; i < 5; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
for (int i = 0; i < 5; i++) {
System.out.print(temp[i] + " ");
}
System.out.println();
System.out.println(arr);
System.out.println(temp);
}
}
- 메모리
- 1. stack
- main이 시작됨 (함수가 실행)
- int a = 0;
- int [ ] arr = {87,100,24,11,79};
- 변수가 6개이다.
- arr도 변수. 숫자 5개도 변수 . 그래서 6개
- heap에 변수 5개가 생긴다.
- 주소 1000이 들어온다.
- 변수가 6개이다.
- arr[1] = 600;
- 1번에다가 600을 넣어라.
- arr이 주소가 1000이니까. heap으로 가서
- int [ ] temp = arr;
- =는 복사하라.
- 즉 주소를 복사. 1000
- temp[1] = 0;
- 2. heap
- int [ ] arr = {87,100,24,11,79}; 의 new가 생긴다.
- 빈칸 5개에 숫자가 들어간다.
- new의 주소가. arr에 주소가 들어간다.
- = new가 생략된것
- arr[1] = 600; 600을 넣어라.
- arr의 주소인 1000으로 와서
- arr[1]에 600을 넣는다.
- temp[1] = 0;
- 그러면 600이 지워진다.
- int [ ] arr = {87,100,24,11,79}; 의 new가 생긴다.
- 3. static
- 1. stack

- C0906개념03_메모리구조
package C0906일차원메모리구조;
public class C0906개념03_메모리구조 {
public static void main(String[] args) {
// arr1과 arr2 의 값이 같다를 표현해보세요.
// 아래와 같이 일일히 검사 해야한다.
int[] arr1 = {10,20,30,40};
int[] arr2 = {10,20,30,40};
System.out.println(arr1 + " " + arr2);
if(arr1 == arr2) {
//같다가 나올것 같지만 안나온다.
//주소가 다르기 때문에.
System.out.println("같다.1");
}else{
System.out.println("다르다.1");
}
//----------------------------------------
//같다를 하기 위해서. 내부적으로
//하나씩 같을 때마다. 개수를 세야 한다.
//그래서 그 개수가 길이와 같으면 그제야 같다가 나온다.
int count = 0;
for (int i = 0; i < arr1.length; i++) {
if (arr1[i] == arr2[i]) {
count += 1;
} else {
break;
}
}
if (count == arr1.length) {
System.out.println("같다.2");
} else {
System.out.println("다르다.2");
}
}
}
- C0906개념04_메모리구조
package C0906일차원메모리구조;
public class C0906개념04_메모리구조 {
public static void main(String[] args) {
int[] arr1 = {10,20,30,40};
int[] arr2 = {10,20,30,40};
// [문제1] 아래 주석을 풀고 실행했을 때 어떤 값이 나올지 예상하고 주석을 푸시오.
/*
if(arr1 == arr2) {
System.out.println("같다1");
}else {
System.out.println("다르다1");
}
*/
//---------------------------------------------------------------
//주소를 계속 주었기 때문에. 같다가 나온다.
// [문제2] 아래 주석을 풀고 실행했을 때 어떤 값이 나올지 예상하고 주석을 푸시오.
int[] arr3 = {10,20,30,40};
int[] temp = arr3;
int[] arr4 = temp;
/*
if(arr3 == arr4) {
System.out.println("같다2");
}else {
System.out.println("다르다2");
}
*/
}
}
반응형
'코딩 > 2-JAVA' 카테고리의 다른 글
| C0909이차배열과데이터 (3) | 2025.06.27 |
|---|---|
| C0907이차원메모리구조 , C0908행렬 (0) | 2025.06.26 |
| C0903정렬 , C0904이차배열완전탐색 , C0905그룹바이 (3) | 2025.06.25 |
| C09이차배열 => C0901이차배열 , C0902이차배열과데이터 (0) | 2025.06.25 |
| C0807배열입력심화 (0) | 2025.06.25 |