JAVA
[JAVA]원시 타입(primitive type)과 래퍼 클래스(wrapper class)
개발자잡
2024. 11. 20. 04:28
주요 차이점
- 원시 타입 (Primitive type)과 래퍼 클래스 (Wrapper class)
- int와 float은 Java의 원시 타입(primitive type)입니다. 메모리에서 더 가볍고, 직접 값만 저장합니다.
- Integer와 Float은 원시 타입을 감싸는 래퍼 클래스입니다. Java에서 객체로 다루어질 수 있으며, 컬렉션 프레임워크(List, Set 등)에 사용될 수 있습니다.
- 기본 값
- int와 float의 기본값은 각각 0과 0.0f입니다.
- Integer와 Float의 기본값은 null일 수 있습니다. (객체이므로 초기화되지 않으면 null을 가질 수 있습니다.)
- 메서드 제공 여부
- Integer와 Float은 클래스이므로 다양한 유틸리티 메서드(parseInt(), toString(), compare(), floatValue() 등)를 제공합니다.
- 반면에 int와 float은 이러한 메서드가 없으며, 순수하게 값만 나타냅니다.
- 박싱(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의 관계도 동일합니다.