PHpullh
학습 라이브러리/Java/원시 타입 vs 래퍼 클래스 심화

JAVA · 기초 문법

원시 타입 vs 래퍼 클래스 심화

원시 타입과 래퍼 클래스의 메모리 차이, ==equals()의 함정을 깊이 이해합니다.

기초 문법입문primitivewrapperInteger캐시equals

핵심 설명

원시 타입과 래퍼 클래스의 메모리 차이, ==equals()의 함정을 깊이 이해합니다.

Java code

public class PrimitiveVsWrapper {
    public static void main(String[] args) {
        // 원시 타입 — 스택에 저장, 빠름
        int a = 127;
        int b = 127;
        System.out.println(a == b); // true

        // 래퍼 — 힙에 저장, 캐시 범위 주의
        Integer x = 127;
        Integer y = 127;
        System.out.println(x == y);      // true (캐시)
        System.out.println(x.equals(y)); // true

        Integer p = 128;
        Integer q = 128;
        System.out.println(p == q);      // false! (캐시 범위 초과)
        System.out.println(p.equals(q)); // true

        // 메모리 차이: int=4B, Integer=16B+
        System.out.println(Integer.BYTES); // 4
    }
}

학습 팁

Integer 캐시 범위는 -128~127입니다. -XX:AutoBoxCacheMax로 상한을 늘릴 수 있습니다.

주의할 점

래퍼 타입끼리 ==로 비교하면 캐시 범위 밖에서는 false가 됩니다. 항상 equals()를 사용하세요.

자주 묻는 질문

원시 타입 vs 래퍼 클래스 심화란 무엇인가요?

원시 타입과 래퍼 클래스의 메모리 차이, == 와 equals() 의 함정을 깊이 이해합니다.

원시 타입 vs 래퍼 클래스 심화 학습 시 주의할 점은 무엇인가요?

래퍼 타입끼리 == 로 비교하면 캐시 범위 밖에서는 false 가 됩니다. 항상 equals() 를 사용하세요.