Data type이란 해당 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 것이다. 자바에서 타입은 크게 기본형 타입(원시 타입)과 참조형 타입이 있다.
Primitive Type
- 총 8가지의 primitive type을 미리 정의하여 제공
- 기본값이 있기 때문에 null이 존재하지 않음. 만약 기본형 타입에 null을 넣고 싶다면 wrapper class 활용
- 실제값을 저장하는 공간으로 stack 메모리에 저장됨
- 컴파일 시점에 담을 수 있는 크기를 벗어나면 에러를 발생시키는 컴파일 에러가 발생
Reference Type
- Primitive type을 제외한 모든 타입
- 빈 객체를 의미하는 null이 존재
- 값이 저장되어 있는 곳의 주소값을 저장하는 공간으로 stack 메모리에 저장함
- heap 메모리에 실제 객체와 배열 등이 생성됨 (주소는 heap 영역)
- 크기가 정해져 있지 않고 프로그램 실행시 메모리에 동적 할당됨
- 실행시켰을 때 에러가 나는 런타임 에러가 발생. 예를 들어 객체나 배열을 null 값으로 받으면 nullpointException이 발생할 수 있음
차이점
Null 포함 가능 여부
원시 타입은 null을 담을 수 없지만, 참조 타입은 가능
int i = null;
Integer integer = null;
Generic Type에서 사용 가능 여부
원시 타입은 사용할 수 없지만, 참조 타입은 가능
List<int> list;
List<Integer> list;
참고 사이트