Autoboxing & Unboxing
: 기본형과 참조형간의 자동변환
- JDK1.5 이전에는 기본형과 참조형간의 연산이 불가능
- 이후에는 Autoboxing과 unboxing이 가능해지면서 연산이 가능해졌음.
↳ !!컴파일러!!가 자동으로 래퍼클래스를 기본형으로 변환시켜줌
class Ex9_16 { public static void main(String[] args) { int i = 10; // 기본형을 참조형으로 형변환(형변환 생략 가능) // ↳ 원래는 기본형을 참조형으로 변경할 때 형변환 연산자 사용 불가(원칙) → 컴파일러가 자동으로 바꿔줌(원칙이 바뀐 것은 아님) Integer intg = (Integer)i; //컴파일러(실제코드): Integer intg = Integer.valueOf(i); Object obj = (Object)i; //컴파일러(실제코드): Object obj = (Object)Integer.valueOf(i); Long lng = 100L; // Long lng = new Long(100L) int i2 = intg + 10; // 참조형과 기본형간의 연산 가능 (참조형이 자동으로 기본형으로 변환) long l = intg + lng; // 참조형간의 덧셈도 가능 Integer intg2 = new Integer(20); int i3 = (int)intg2; // 참조형을 기본형으로 형변환도 가능(형변환 생략가능)
↳ 컴파일러가 실제적으로 만들어주는 코드를 외우려고 하지말고, 컴파일러가 자동으로 오토박싱 언박싱 해주므로 간단하게 쓸 수 있으며 그 간단하게 쓸 수 있는 코드들만 알아두면 됨.
출처
- 자바의 정석 기초편: ch 9- 30, 31