본문 바로가기

JAVA/DAY 05 _ 23.08.23

memory

1. 메모리의 생성과 소멸 ★★★★

 

* 모든 지역변수(형광노랑)는 stack에 생성됨
* 스코프(블럭 = {})를 탈출하면 소멸됨

1) aaa라는 메모리에 10을 할당하는것
2) {  }를 쓰면.... 그 안에서만 쓰는 메모리임

//	int aaa = 10;
//	aaa = 20;
	
//	int aaa = 30;	-> 같은 변수를 한번 더 쓰는건 안되는게 일반이야. aaa변수를 한번 더 쓰고 싶으면 방법이?


{
int aaa = 10;
aaa = 20;
System.out.println(aaa);	// 20 --------> 이 시점 이후에 스코프 탈출 == int aaa = 10;이 소멸되는 것.
}

// System.out.println(aaa);	// {  } 밖에서 print를하고싶은데 명명이 안돼있으니 출력이 안되지
// aaa = 20;			// {  } --> 위에서 (블록 단위로) 소멸되어서 명명이 안돼있으니 출력이 안됨!!!

int aaa = 30;			// aaa 메모리에 20을 할당함. 이건 main 블록 안에 생성되었고,
			        // main안에서는 계속 사용가능, 블록 탈출 이후는 소멸된다.
System.out.println(aaa);	// 30



{
int bbb = 10;			// 들여쓰기가 된다구.
bbb = 20;
}

int bbb = 20;			// 위의 bbb와 아래의 bbb는 전혀 다른 메모리임!!!!!!!!
bbb = 30;

 

 

2. Stack memory

: 한쪽 끝에서만 데이터를 추가하거나 제거할 수 있는 자료 구조 -> "Last In, First Out (LIFO)" 구조


// 상자가 쌓이면서, 먼저 생성된게 마지막에 소멸되는것. 나는 그뭐냐 동그라미안에 동그라미.. ㅋㅋㅋㅋㅋ
// 구구단의 경우에는 안쪽 y는 반복문동안 계속 생성/소멸이 반복되다가,

// 전체를 나오면 비로소 찐 소멸이 되는거지~!!~!!!!!
// 그래서 여기서 썼던 a 변수를 다른 파일에서 쓸 수 있는거지뭐~!~!~!

int a = 10;			// 1) a 생성
int b = 20;			// 2) b 생성

{
int c = 30;			// 3) c 생성
{
int d = 40;			// 4) d 생성   
int e = 50;			// 5) e 생성
}				// 6) d, e 소멸
{
int f = 60;			// 7) f 생성
}				// 8) f 소멸
}				// 9) c 소멸

int g = 70;			// 10) g 생성

}				// 11) a,b,g 소멸

'JAVA > DAY 05 _ 23.08.23' 카테고리의 다른 글

Operator1. 산술 연산  (0) 2023.08.29
java 단축키  (0) 2023.08.29
변수 명명법  (0) 2023.08.29
Type Casting  (0) 2023.08.29
literal  (2) 2023.08.29