Java

JAVA 기초 정리 - 래퍼 클래스(Wrapper Class)

chungmani 2026. 5. 21. 17:54

 

래퍼 클래스(Wrapper Class)란?

래퍼 클래스는:

"기본 자료형을 객체(Object) 형태로 감싸는 클래스"

이다.

 

쉽게 말하면:

  • int 같은 기본형 데이터를
  • 객체처럼 사용할 수 있게 포장해주는 것

이라고 이해할 수 있다.

 

예를 들어:

int a = 10;

은 기본형 변수이고,

Integer num = 10;

은 래퍼 클래스를 사용한 객체 형태이다.


1. 기본 자료형(Primitive Type)

자바에는 기본 자료형들이 존재한다.

기본 자료형 종류

boolean
char
byte
short
int
long
float
double

이 자료형들은:

  • 값을 직접 저장하고
  • 속성이나 기능(메서드)을 가지지 않는다.

2. 참조형(Reference Type)

객체를 저장하는 변수는 참조형 변수라고 부른다.

참조형 변수는 실제 데이터를 직접 저장하는 것이 아니라:

"객체가 저장된 메모리 주소를 가리킨다"

라고 이해할 수 있다.

 

객체 데이터는 Heap 영역에 저장되기 때문에 참조형 변수는 Heap 메모리 주소를 참조하게 된다.

참조형 예시

Person personA = new Person();
int[] arr = {1, 2, 3};

객체와 배열은 모두 참조형이다.


기본형 변수 vs 참조형 변수

int a = 1;
System.out.println(a);

기본형 변수는 실제 값이 출력된다.

Person personA = new Person();
System.out.println(personA);

참조형 변수는 객체 주소값 형태가 출력된다.


래퍼 클래스도 참조형이다

Integer num = 100;

Integer는 객체이기 때문에 참조형 변수이다.

즉:

  • int → 기본형
  • Integer → 객체형(래퍼 클래스)

이다.


3. 래퍼 클래스를 사용하는 이유

기본형은 객체가 아니기 때문에:

  • 메서드 사용 불가
  • 객체 기능 사용 불가

라는 특징이 있다.

 

하지만 래퍼 클래스를 사용하면 객체처럼 다양한 기능을 사용할 수 있다.

예시

Integer num = 100;

String numStr = num.toString();

여기서:

toString()

메서드를 사용해서 숫자를 문자열로 변환할 수 있다.

기본형 int는 이런 기능을 직접 사용할 수 없다.


4. 오토박싱(Auto Boxing)

오토박싱은:

기본형 → 래퍼형

으로 자동 변환되는 과정이다.

예시

Integer num3 = 10;

겉으로 보면 그냥 대입한 것 같지만,

실제로는 내부적으로:

Integer num3 = Integer.valueOf(10);

이 코드가 자동 실행된다고 한다.

 

즉:

  • 기본형 int
  • 객체형 Integer

로 자동 변환되는 것이다.


5. 오토언박싱(Auto Unboxing)

오토언박싱은:

래퍼형 → 기본형

으로 자동 변환되는 과정이다.

예시

int num4 = num3;

내부적으로는:

int num4 = num3.intValue();

가 실행되는 것과 비슷하다.

즉:

  • Integer 객체
  • int 기본형

으로 자동 변환된다.


6. 기본형과 래퍼형 성능 차이

래퍼형은 객체이기 때문에 내부적으로 추가 작업이 발생한다.

그래서:

  • 메모리 사용량 증가
  • 연산 속도 감소

가 발생할 수 있다.

 

즉:

  • 빠른 연산이 중요할 때 → 기본형 사용
  • 객체 기능이 필요할 때 → 래퍼형 사용

이 좋다고 한다.


기본형 vs 래퍼형 정리

기본형래퍼 클래스

int Integer
double Double
boolean Boolean
char Character

오늘 배운 점

처음에는 Wrapper Class가 굉장히 어려워 보였는데,

 

결국:

"기본형을 객체처럼 사용할 수 있게 감싸는 클래스"

라는 개념이라는 걸 이해하게 되었다.

 

특히:

  • 기본형 → 값 자체 저장
  • 참조형 → 객체 주소 저장
  • 오토박싱 / 오토언박싱

개념이 꽤 중요하다는 느낌이 들었다 😊