Java 오토박싱과 언박싱 마스터하기: 실전 예제와 모범 사례
Java 오토박싱과 언박싱
Java가 프리미티브 타입과 래퍼 객체 간을 자동으로 변환하는 방식을 탐구하고, 그 과정을 보여주는 실전 예제를 확인하세요.
Java 오토박싱 – 프리미티브에서 래퍼 객체로
프리미티브 값을 래퍼 클래스 변수에 할당하면 Java 컴파일러는 오토박싱을 수행하여 해당 래퍼 객체를 생성합니다. 예를 들어:
int a = 56; // 오토박싱
Integer aObj = a;
오토박싱은 객체만 허용하는 제네릭 컬렉션 작업 시 특히 편리합니다. 코드를 간결하고 타입 안전하게 유지합니다.
예제 1: ArrayList와 오토박싱
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
// 오토박싱: 프리미티브 5와 6이 Integer 객체가 됨
list.add(5);
list.add(6);
System.out.println("ArrayList: " + list);
}
}
실행 결과
ArrayList: [5, 6]
이 스니펫에서 ArrayList는 Integer 객체를 보유합니다. 컴파일러는 프리미티브 리터럴 5와 6을 자동으로 박싱합니다.
Java 언박싱 – 래퍼에서 프리미티브로
반대로 언박싱은 래퍼 객체를 다시 프리미티브 형태로 변환합니다. 예를 들어:
// 오토박싱
Integer aObj = 56;
// 언박싱
int a = aObj;
언박싱은 컬렉션과 원활하게 작동하여 필요할 때 값을 프리미티브로 조회할 수 있게 합니다.
예제 2: ArrayList에서 언박싱
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(5);
list.add(6);
System.out.println("ArrayList: " + list);
// 언박싱: 인덱스 0의 Integer가 int가 됨
int a = list.get(0);
System.out.println("Value at index 0: " + a);
}
}
실행 결과
ArrayList: [5, 6]
Value at index 0: 5
여기서 list.get(0)은 Integer를 반환하고, 컴파일러는 a에 할당하기 위해 자동으로 int로 언박싱합니다.
오토박싱과 언박싱을 이해하면 컬렉션과 객체를 기대하는 API와 상호작용할 때 더 깔끔하고 효율적인 Java 코드를 작성하는 데 도움이 됩니다.