JAVA · 기초 문법
자동 박싱과 언박싱
오토박싱(auto-boxing)과 언박싱(unboxing)의 동작 원리와 성능 영향을 알아봅니다.
기초 문법입문autoboxingunboxing성능NullPointerException
핵심 설명
오토박싱(auto-boxing)과 언박싱(unboxing)의 동작 원리와 성능 영향을 알아봅니다.
Java code
import java.util.ArrayList;
import java.util.List;
public class AutoBoxing {
public static void main(String[] args) {
// 오토박싱: int -> Integer
Integer wrapped = 42;
// 컴파일러가 Integer.valueOf(42)로 변환
// 언박싱: Integer -> int
int unwrapped = wrapped;
// 컴파일러가 wrapped.intValue()로 변환
// 컬렉션에서 오토박싱
List<Integer> nums = new ArrayList<>();
for (int i = 0; i < 5; i++) {
nums.add(i); // 오토박싱 발생
}
// 성능 함정: 반복문에서 불필요한 박싱
Long sum = 0L; // Long 사용 — 매번 박싱!
for (long i = 0; i < 100_000; i++) {
sum += i; // 언박싱 + 덧셈 + 박싱
}
// 해결: long sum = 0L; 사용
}
}학습 팁
성능이 중요한 루프에서는 반드시 원시 타입을 사용하세요. 래퍼 타입은 컬렉션 저장 시에만 사용하는 것이 좋습니다.
주의할 점
Integer가 null일 때 언박싱하면 NullPointerException이 발생합니다. null 체크를 먼저 하세요.
자주 묻는 질문
자동 박싱과 언박싱란 무엇인가요?
오토박싱(auto-boxing)과 언박싱(unboxing)의 동작 원리와 성능 영향을 알아봅니다.
자동 박싱과 언박싱 학습 시 주의할 점은 무엇인가요?
Integer 가 null 일 때 언박싱하면 NullPointerException 이 발생합니다. null 체크를 먼저 하세요.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.