변수의 선언과 초기화
- 변수의 선언 : 타입 변수; (ex: int num;)
- 변수의 초기화(메모리 할당) : 타입 변수 = 값; (ex: int num = 10);
일반 변수와 레퍼런스 변수
- 일반 변수는 값을 가지고 있다. 컴파일 시점에 크기가 정해져 있다. (ex: int처럼 크기가 정해진 것)
- 레퍼런스 변수는 주소값(4바이트)을 가지고 있다. 컴파일 시점에 크기를 알 수 없고 런타임에 알 수 있다.
- 주소는 힙메모리 내 주소다. 일반 변수와 달리 주소 값(포인터)을 통해 재차 찾아가야 하므로 액세스가 2번 발생한다.
레퍼런스 변수 예시
- class MyData { int num; String name; } 로 예시
- 변수의 선언 : MyData myData;
- 변수의 초기화(메모리 할당) : myData = new MyData();
- 컴파일 시점에는 myData의 크기를 알 수 없음.
- 런타임 시점에는 myData 변수에 4바이트를 할당하고 힙메모리 주소 값을 보관.
- 힙메모리를 찾아가면 int와 String의 각 4바이트를 합한 8바이트가 할당되어 보관됨.
'JAVA,객체지향' 카테고리의 다른 글
JAVA/ 상속과 콤포지션 (0) | 2021.11.11 |
---|---|
java/라이브러리 만들기 (0) | 2021.11.09 |
메서드 Stack 메모리 (0) | 2021.10.27 |
JAVA기본 메모리 운영 (0) | 2021.07.15 |
객체 지향{상속: 재사용+확장} (0) | 2021.05.11 |