PHpullh
학습 라이브러리/Java/자동 박싱과 언박싱

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; 사용
    }
}

학습 팁

성능이 중요한 루프에서는 반드시 원시 타입을 사용하세요. 래퍼 타입은 컬렉션 저장 시에만 사용하는 것이 좋습니다.

주의할 점

Integernull일 때 언박싱하면 NullPointerException이 발생합니다. null 체크를 먼저 하세요.

자주 묻는 질문

자동 박싱과 언박싱란 무엇인가요?

오토박싱(auto-boxing)과 언박싱(unboxing)의 동작 원리와 성능 영향을 알아봅니다.

자동 박싱과 언박싱 학습 시 주의할 점은 무엇인가요?

Integer 가 null 일 때 언박싱하면 NullPointerException 이 발생합니다. null 체크를 먼저 하세요.