개발/자바

Java의 Wrapper 클래스 개요 및 차이점

피터JK 2025. 2. 19. 10:31
728x90

1. Wrapper 클래스란?

Java에서 기본 자료형(int, double, char 등)을 객체로 다룰 수 있도록 감싸는 클래스입니다.
예)

  • int → Integer
  • double → Double
  • char → Character

2. 주요 Wrapper 클래스

기본 타입 Wrapper 클래스
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

3. Wrapper 클래스의 주요 차이점

구분  기본 타입 (Primitive Type) Wrapper 클래스 (Reference Type)
메모리 저장 위치 스택(Stack) 힙(Heap)
기본 제공 연산 산술 연산 (+, -, *, /) 가능 직접 연산 불가능 (intValue()로 변환 후 연산)
기본 값 (초기화 값) 0 (boolean은 false) null
객체 특성 객체가 아님 객체이므로 null 허용
사용 용도 기본적인 연산 제네릭(Generic), 컬렉션(Collection), 객체 지향 프로그래밍에서 활용

4. 주요 차이점 상세 비교

메모리 차이

  • 기본 타입은 스택(Stack) 에 저장되지만,
    Wrapper 클래스는 힙(Heap) 에 객체로 생성됨.
int a = 10;  // 스택 메모리 사용
Integer b = new Integer(10); // 힙 메모리 사용

null 사용 가능 여부

  • 기본 타입은 null을 가질 수 없음.
  • Wrapper 클래스는 참조형이므로 null 할당 가능.
Integer num = null; // 가능
int num2 = null; // 컴파일 오류 발생

오토 박싱(Auto-Boxing) & 언박싱(Unboxing)

  • 기본 타입과 Wrapper 클래스를 자동 변환하는 기능.
int num = 10;
Integer wrapperNum = num; // Auto-Boxing
int newNum = wrapperNum;  // Unboxing

컬렉션에서의 사용

  • Java의 컬렉션(List, Set, Map)은 기본 타입을 직접 저장할 수 없음.
  • Wrapper 클래스를 사용해야 함.
List<Integer> list = new ArrayList<>();
list.add(10); // 기본 타입 int는 컬렉션에 추가 불가능

5. 언제 Wrapper 클래스를 사용해야 할까?

✅ 기본 타입 사용이 적합할 때:

  • 성능이 중요한 경우 (메모리 절약, 속도 빠름)
  • 단순한 연산이 필요한 경우

✅ Wrapper 클래스 사용이 적합할 때:

  • 컬렉션(List, Map)을 사용할 때
  • null 값을 허용해야 할 때
  • 객체로 활용해야 할 때 (예: 리플렉션, 스트림 API)

6. 결론

  • 기본적으로 성능이 중요한 경우 기본 타입 사용
  • null 처리나 객체가 필요할 때 Wrapper 클래스 사용
  • 자바 5 이후 Auto-Boxing/Unboxing 덕분에 크게 신경 쓰지 않아도 됨.
    하지만, 불필요한 박싱/언박싱이 성능 저하를 유발할 수 있으므로 주의!
728x90