자바의 타입은 기본 타입(Primitive type) / 참조 타입(Reference type)의 두 가지로 나뉘는데, 이 중에서 기본 타입에는 총 8가지 종류가 있다.
byte / short / int / long / float / double / char / boolean
기본 타입의 값을 참조 타입의 객체 안에 넣거나 그 반대의 경우 서로 호환이 안되어서 개발자가 직접 타입을 명시해줘야 했는데 jdk 1.5 버전부터는 그럴 필요가 없어졌다고 한다.
wrapper class는 기본 타입을 참조 타입화 시킨 클래스인데 이것을 이용하여 참조타입 객체에 기본 타입의 데이터를 넣거나 반대의 경우가 가능하다.
이 과정이 바로 autoboxing, unboxing이다.
public void test() {
int i = 1; //기본 타입
Integer num = new Integer(1); //참조 타입
//unboxing 적용
int i3 = new Integer(3);
//intValue()로 int인 기본타입으로 변환해서 대입했어야 함
//int i3 = (new Integer(3)).intValue()
//autoboxing 적용
Integer i4 = 3;
//int 기본값 3을 객체로 변환해서 대입했어야 함
//Integer i4 = new Integer(3);
}
autoboxing, unboxing 을 적용하여 기본 타입 변수에 참조 타입의 값을, 그리고 반대의 경우로 값을 대입할때 타입을 명시하지 않고도 가능한 것을 알 수 있다.
int - Integer처럼 기본 타입 8가지에 각각 대응하는 클래스들이 있고, java.lang package에서 제공되며 유일하게 import 없이 사용이 가능하다.