JAVA,객체지향

JAVA/일반변수와 레퍼런스(참조) 변수

25G 2021. 10. 27. 21:25

변수의 선언과 초기화

 

- 변수의 선언 : 타입 변수; (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