[JAVA] 래퍼 클레스에 대하여

2025. 6. 24. 14:42·자바

 

자바에는 int, double, boolean 같은 기본형(primitive type) 데이터 타입이 있다. 이들은 성능이 뛰어나고 메모리 사용이 효율적이지만, 객체가 아니라는 한계도 함께 가진다.

 

1. 객체가 아니기에 생기는 제약

  • 기본형은 메서드를 가질 수 없다. 예를 들어 int는 문자열로 바꾸는 등의 기능이 없다.
  • List, Set, Map 같은 컬렉션 프레임워크에는 객체만 담을 수 있기 때문에 기본형은 사용할 수 없다.
  • 제네릭 타입(List<T>)에도 기본형은 사용할 수 없다.
  • 기본형은 null 값을 가질 수 없다. 하지만 실제 개발에선 값이 없음을 표현해야 하는 경우가 많다.

이런 불편을 해결하기 위해 자바는 기본형에 대응하는 래퍼 클래스(wrapper class) 를 제공한다.

 

 

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

이 래퍼 클래스들은 모두 불변(immutable)하며, null을 허용하고 메서드도 제공한다.

 

 

박싱(Boxing)과 언박싱(Unboxing)

래퍼 클래스는 기본형 값을 객체로 감싸거나 다시 꺼내는 기능을 제공한다.

int value = 10;
Integer boxed = Integer.valueOf(value);   // 박싱 (기본형 → 객체)
int unboxed = boxed.intValue();           // 언박싱 (객체 → 기본형)

 

자바 1.5부터는 이러한 박싱/언박싱을 자동으로 처리해준다. 이를 오토 박싱(Auto-boxing), 오토 언박싱(Auto-unboxing)이라고 부른다.

int value = 7;
Integer boxedValue = value;       // 오토 박싱
int unboxedValue = boxedValue;    // 오토 언박싱

//컴파일 시 아래처럼 자동 변환된다.
Integer boxedValue = Integer.valueOf(value); //박싱
int unboxedValue = boxedValue.intValue(); //언박싱

 

래퍼 클래스는 단지 박스에 싸는 용도만 있는 게 아니다.
다양한 메서드를 통해 기본형만으로는 할 수 없던 일도 가능하게 해준다.

  • valueOf("100") : 문자열을 래퍼 객체로 변환한다.
  • parseInt("100") : 문자열을 기본형 숫자로 변환한다.
  • compareTo() : 값 크기 비교에 사용된다.
  • Integer.sum(10, 20) : 기본형 연산도 지원한다.

 

결론적으로 

처음에는 단순했던 int, double이 점점 복잡해지는 프로그램 속에서 한계를 드러내고, 우리는 그것을 객체로 감싸는 래퍼 클래스를 통해 해결해왔다. 덕분에 이제 기본형도 컬렉션에 담을 수 있고, null을 표현할 수 있으며, 다양한 메서드와 유틸리티 함수를 자유롭게 사용할 수 있다.

 

래퍼 클래스는 기본형을 객체로 바꿔주는 단순한 도구가 아니라,
자바의 객체지향성을 실생활에 연결해주는 실용적인 도구다.

'자바' 카테고리의 다른 글

[JAVA] 날짜와 시간  (1) 2025.07.06
[JAVA] 열거형(ENUM)에 대하여  (1) 2025.06.29
[JAVA] String 클래스에 대하여  (0) 2025.06.24
[JAVA] 불변객체에 대하여  (0) 2025.06.24
[JAVA] Object Class에 대하여  (6) 2025.06.24
'자바' 카테고리의 다른 글
  • [JAVA] 날짜와 시간
  • [JAVA] 열거형(ENUM)에 대하여
  • [JAVA] String 클래스에 대하여
  • [JAVA] 불변객체에 대하여
0kingki_
0kingki_
자바 + 스프링 웹 개발
  • 0kingki_
    0kingki_
    0kingki_
  • 전체
    오늘
    어제
    • 분류 전체보기 (134)
      • 코딩 테스트 (54)
      • 자바 (21)
      • 스프링 (27)
      • 타임리프 (16)
      • 스프링 데이터 JPA (8)
      • 최적화 (2)
      • QueryDSL (4)
      • AWS (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    불변객체
    SOLID
    Java
    백준
    thymeleaf
    스프링
    dfs
    코딩테스트
    컬렉션
    JPA
    스프링 데이터 JPA
    재귀
    쿼리dsl
    QueryDSL
    객체지향
    mvc
    스프링 컨테이너
    타임리프
    예외 처리
    BFS
    최적화
    코딩 테스트
    fetch join
    LocalDateTime
    SpringDataJpa
    자바
    spring
    쿼리
    예외처리
    다형성
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
0kingki_
[JAVA] 래퍼 클레스에 대하여
상단으로

티스토리툴바