크기 자체가 그닥 크지 않기 때문에, value값을 copy한다.
primitive data type을 여러 개 모아놓은 것처럼 크기가 크다. 그래서 value값을 copy하는 데 부담이 되기 때문에, object의 address를 copy한다. (조그마한 상자 안에 냉장고를 우겨넣는다고 상상해보라) 그렇기에 단지 주소를 참조한다는 의미에서 reference variable이라고도 한다.
non-primitive variable = reference variable
아래의 예시를 보자.
Horse hrs = new Horse();
Horse
라는 Class
의 object
가 new
라는 키워드를 통해 생성되었다. (정확히는 메모리 할당이 되었다고 하는 게 맞다.)
여기서 주의할 점은 hrs
는 object
가 아니라는 것이다!
hrs
는 heap 메모리 공간에 할당되어, object
를 pointing하는 reference
이다.