충분히 쌓여가는
오토박싱 & 언박싱 본문
오토박싱 & 언박싱
오토 박싱: 기본형의 값을 객체로 자동변환하는 것(int라는 기본형을 래퍼 클래스의 Integer로 자동으로 바꿔주는 것)
언박싱: 객체의 값을 기본형으로 자동변환하는 것(래퍼 클래스의 Integer을 int라는 기본형으로 자동으로 바꿔주는 것)
컴파일 전의 코드(불가능) | 컴파일 후의 코드(가능) |
int i = 5; Integer iObj = new Integer(7); int sum = i + iObj; |
int i = 5; Integer iObj = new Integer(7); int sum = i + iObj.intValue(); // 언박싱(Integer -> int) |
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(10); // 오토 박싱 10 -> new Integer(10)
int value = list.get(0); // 언박싱 new Integer(10) -> 10
코드
import java.util.ArrayList;
public class AutoBoxingTest {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(100); // JDK 1.5 이전에는 에러발생, 자동으로 객체로 바꿔준다
list.add(new Integer(100));
// Integer i = list.get(0);// list에 저장된 첫 번째 객체를 꺼낸다
// int i = list.get(0).intValue(); // intValue()로 Integer을 int로 변환
int i = list.get(0); // intValue()없이 사용할 수 있다
System.out.println(i); // 100
}
}
100
코드
import java.util.ArrayList;
public class AutoBoxingTest {
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; // 참조형을 기본형으로 형변환도 가능(형변환 생략 가능)
}
}
컴파일 전의 코드(가능하다) | 컴파일 후의 코드 |
Integer intg = (Integer)i; Object obj = (Object)i; Long lng = 100L; |
Integer intg = Integer.valueOf(i); Object obj = (Object)Integer.valueOf(i); Long lng = new Long(100L); |
'Java > JAVA2' 카테고리의 다른 글
형식화 클래스 (0) | 2023.07.03 |
---|---|
Calendar 클래스 (0) | 2023.07.02 |
래퍼(wrapper) 클래스, Number 클래스 (0) | 2023.06.29 |
StringBuilder, Math 클래스 (0) | 2023.06.28 |
StringBuffer 클래스의 메서드 (0) | 2023.06.28 |