PHpullh
학습 라이브러리/Java/기본 타입 & 래퍼 클래스 & 오토박싱

JAVA · 기초 문법

기본 타입 & 래퍼 클래스 & 오토박싱

Java의 원시 타입(primitive)과 래퍼 클래스(Wrapper)의 차이, 오토박싱/언박싱의 원리.

기초 문법입문primitivewrapperautoboxingIntegerequals

핵심 설명

Java의 원시 타입(primitive)과 래퍼 클래스(Wrapper)의 차이, 오토박싱/언박싱의 원리.

Java code

public class Types {
    public static void main(String[] args) {
        // 원시 타입 (primitive)
        int    i = 42;
        long   l = 100_000_000L;
        double d = 3.141592653589793;
        float  f = 3.14f;
        boolean b = true;
        char   c = 'A';
        byte   bt = 127;
        short  s = 32767;

        // 래퍼 클래스 (Wrapper)
        Integer  boxed  = 100;   // 오토박싱
        int      unboxed = boxed; // 언박싱

        // Integer 캐시: -128~127은 같은 객체
        Integer a = 127;
        Integer b2 = 127;
        System.out.println(a == b2);    // true (캐시)

        Integer c2 = 128;
        Integer d2 = 128;
        System.out.println(c2 == d2);   // false! (새 객체)
        System.out.println(c2.equals(d2)); // true  (값 비교)

        // 유용한 래퍼 메서드
        System.out.println(Integer.MAX_VALUE);    // 2147483647
        System.out.println(Integer.toBinaryString(42)); // 101010
        System.out.println(Integer.parseInt("FF", 16)); // 255
        System.out.println(Double.isNaN(0.0 / 0.0));   // true

        // 타입 캐스팅
        double pi = 3.99;
        int truncated = (int) pi;  // 3 (소수점 버림)
        long bigNum = 1_000_000_000L;
        int overflow = (int) bigNum; // 오버플로우 주의!
    }
}

학습 팁

Integer == Integer는 -128~127 범위에서만 true를 반환합니다 (캐시). 래퍼 클래스 비교는 항상 .equals()를 사용하세요.

주의할 점

반복문 안에서 오토박싱을 남용하면 성능 저하가 심각합니다. Long sum = 0L; for(...) sum += i;는 매 반복마다 Long 객체를 생성합니다.

자주 묻는 질문

기본 타입 & 래퍼 클래스 & 오토박싱란 무엇인가요?

Java의 원시 타입(primitive)과 래퍼 클래스(Wrapper)의 차이, 오토박싱/언박싱의 원리.

기본 타입 & 래퍼 클래스 & 오토박싱 학습 시 주의할 점은 무엇인가요?

반복문 안에서 오토박싱을 남용하면 성능 저하가 심각합니다. Long sum = 0L; for(...) sum += i; 는 매 반복마다 Long 객체를 생성합니다.