1.5.2 참조형

참조형은 인스턴스가 위치한 메모리 영역(힙 영역)의 주소를 가지는 자료형이다.

주요 참조형으로는 클래스와 배열이 있다.


참조형으로 변수만 선언한 경우(초깃값을 지정하지 않은 경우) 참조할 주소가 없으므로 그 값은 null,

즉 아무것도 가리키지 않은 상태가 된다.





Note _ 스택 영역과 힙 영역


위 그림에 나오는 메모리 영역에 대해 보충 설명한다. 자바에서는 설정한 값을 메모리 영역에 확보한다. 또한 데이터는 메모리 영역에 있는 스택 영역에 설정된다. 이 때 기본 자료형은 설정할 크기가 정해져 있으므로 스택 영역에 함께 설정된다. 하지만, 클래스 등 참조형 데이터는 인스턴스화 될 때까지 메모리 영역을 어느 정도 사용할지 알 수 없다. 따라서 참조형 데이터는 처음에는 참조 주소를 저장할 수 있는 크기만 확보해두고, 인스턴스화 되었을 때, 그 값은 메모리 영역의 힙 영역이라는 곳에 저장한다.



스택영 영역에 있는 참조형 데이터의 값은 어느 힙 영역을 보면 되는지 알 수 있도록 그 인스턴스 주소가 저장된다. 그러므로 예를 들어 참조형 데이터끼리 값을 비교해도 참조 주소를 비교하는 것이므로 인스턴스의 값 자체를 비교할 수는 없다.




참조형 데이터의 경우 그 데이터가 가리키는 인스턴스를 변경한다는 것은 참조하는 주소를 변경한다는 뜻이다.




단 문자열 클래스인 String은 예외로, 큰 따옴포(")로 에워싼 똑같은 값을 직접 대입한 경우 각각의 데이터는 같은 참조 주소를 나타낸다. 예제로 동작을 확인해보자.


public static void main(String[] args) {

String a = "가나다라마";

String b = "가나다라마";


// a와 b가 같은 참조 주소를 가리키고 있는지 비교하여 같으면 true가 된다.

boolean result = (a==b);

System.out.println("a == b: " + result);

}


결과 : true






'프로그래밍 > JAVA' 카테고리의 다른 글

1.5.4 래퍼 클래스  (0) 2019.02.07
1.5.3 인스턴스  (0) 2019.02.07
1.5 자료형  (0) 2019.01.30
1.4.2 산술 연산  (0) 2019.01.23
1.4 기본적인 계산  (0) 2019.01.23
TAGS.

Comments