JAVA

[JAVA]원시 타입(primitive type)과 래퍼 클래스(wrapper class)

개발자잡 2024. 11. 20. 04:28

주요 차이점

  1. 원시 타입 (Primitive type)과 래퍼 클래스 (Wrapper class)
    • int와 float은 Java의 원시 타입(primitive type)입니다. 메모리에서 더 가볍고, 직접 값만 저장합니다.
    • Integer와 Float은 원시 타입을 감싸는 래퍼 클래스입니다. Java에서 객체로 다루어질 수 있으며, 컬렉션 프레임워크(List, Set 등)에 사용될 수 있습니다.
  2. 기본 값
    • int와 float의 기본값은 각각 0과 0.0f입니다.
    • Integer와 Float의 기본값은 null일 수 있습니다. (객체이므로 초기화되지 않으면 null을 가질 수 있습니다.)
  3. 메서드 제공 여부
    • Integer와 Float은 클래스이므로 다양한 유틸리티 메서드(parseInt(), toString(), compare(), floatValue() 등)를 제공합니다.
    • 반면에 int와 float은 이러한 메서드가 없으며, 순수하게 값만 나타냅니다.
  4. 박싱(Boxing)과 언박싱(Unboxing)
    • 원시 타입인 int와 float이 Integer와 Float로 자동 변환되는 과정을 **박싱(Boxing)**이라고 하며, 반대로 Integer와 Float이 int나 float로 변환되는 것을 **언박싱(Unboxing)**이라고 합니다.
    • 예:
       
int primitiveInt = 5;
Integer wrappedInt = primitiveInt; // 박싱 (Auto-boxing)
int anotherPrimitiveInt = wrappedInt; // 언박싱 (Auto-unboxing)

 

5. 메모리 사용 및 성능

  • 원시 타입이 메모리적으로 더 효율적이며, 성능상 우위를 가질 수 있습니다.
  • 래퍼 클래스는 객체이므로 더 많은 메모리를 사용하며, 참조와 관련된 추가 오버헤드가 발생할 수 있습니다.

사용 사례

  • 원시 타입(int, float)은 계산이나 성능이 중요한 경우에 주로 사용됩니다.
  • 래퍼 클래스(Integer, Float)는 컬렉션에 저장하거나 객체로 다뤄야 하는 경우, 널값 처리가 필요한 경우 사용됩니다.

요약: int와 Integer는 값만 가지는 원시 타입과 객체로 다룰 수 있는 래퍼 클래스라는 차이가 있으며, 성능과 메모리, 메서드 활용의 측면에서 차별성이 있습니다. float와 Float의 관계도 동일합니다.