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 |