참조 자료형
목차
참조 자료형이란?
참조 자료형(Reference Data Type)은 Java의 원시 자료형이 아닌 다른 모든 자료형을 의미한다. 이름이 ‘참조’인 이유는 참조 자료형이 저장하는 값에 있는데, 데이터 자체가 아닌 데이터가 저장된 메모리 주소를 저장하기 때문이다. Java의 참조 자료형들은 모두 객체이며,(반대로 원시 자료형은 객체가 아니다.) 사용할 때 new
키워드로 인스턴스화 과정을 거쳐 메모리의 Heap 영역에 해당 인스턴스를 저장한다. Heap에 저장된 이 인스턴스를 가리키는 주소값을 저장하는 것이 참조 자료형으로 선언한 변수이다. 주소값은 메모리의 Stack 영역에 저장되며 해당 변수를 사용할 땐 저장된 주소값이 가리키는 곳에 있는 인스턴스를 호출하는 것이다. 객체와 클래스, 인스턴스에 관한 설명은 객체 지향 프로그래밍장에서 설명하고자 한다.
참조 자료형과 원시 자료형의 차이점은 다음과 같다.
원시 자료형 | 참조 자료형 |
---|---|
Java 내부에 미리 정의되어 있다. | String을 제외하면 Java에 미리 정의되어 있지 않다. |
직접 메소드를 호출할 수 없다. | 직접 메소드를 호출해 특정 연산을 수행할 수 있다. |
항상 값이 존재한다. 즉, 초기값이 있으며 null이 저장될 수 없다. | null 값이 저장될 수 있다. |
실제 데이터가 Stack 영역에 저장된다. | 실제 데이터는 Heap 영역에 저장되며, Stack엔 데이터가 위치한 Heap 영역의 주소값이 저장된다. |
자료형에 따라 크기가 달라진다. | 주소값만 저장하기 때문에 모든 자료형의 크기가 같다. |
참조 자료형에는 크게 Class, Interface, Array의 4가지가 있다.Java
종류 | 예시 |
---|---|
Class | String, StringBuffer, Enum |
Interface | List, Map, Set |
Array | Array |
위 표에 있는 자료형들이 주로 사용하는 참조 자료형들이다.