[Java] 참조형 변수에 대한 이해 (Reference Variable)
참조형 변수
java에서 변수의 타입 중 참조형 변수란 stack에 쌓이는 명시적인 값이 아니라 주소를 저장하는 것이다.
참조형 변수외에 기본형 변수는 메모리 구조 중 stack에 실제값이 들어간다.
Int id = 1231; (1231이라는 값을 id 변수에 저장)
반면에 참조형 변수는 stack에 주소값(4byte)이 저장되고 heap영역에 새로운 저장공간을 생성한다.
String str = new Strint("apple");
영문학 전공자로서 쉽게 이해가 되지 않아 영어 문법에 비유를 하며 좀 더 이해를 높이고자 한다.
영문법에서 3형식은 주 + 동 + 목이라는 구조를 갖는다. 목적어에는 각각 명사와 명사절을 포함할 수 있다.
ex)목적어에 명사를 넣을 경우
I like 2.
ex) 목적에 명사절(to 부정사)을 넣는 경우
I like to eat apple with my family.
I like that my friends come to my house to play the video game.
이때 숫자 2는 선언한 변수에 실제 값을 저장할 수 있고 stack에 저장이 가능하다.
int i = 2;
반면에 to eat apple with my family는 다른 문장으로도 표현을 할 수 있고 굉장히 가변적일 수 있다. 또한 절의 길이 너무 길어 stack에 저장하면 굉장히 비효율적이다. 따라서 목적어 자리(주소값)를 stack에 저장하고 HEAP 공간에 명사절을 저장한다고 생각 할 수 있다.
String str = new String(“명사절”);
결론적으로 참조형 변수에는 heap의 주소 부분을 저장하는 것이다. 마치 목적어 자리의 주소를 저장하듯이..
(개인적인 공부를 위한 공간으로 원리가 맞지 않더라고 너그럽게 이해부탁드립니다.)