래퍼 클래스(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가 굉장히 어려워 보였는데,
결국:
"기본형을 객체처럼 사용할 수 있게 감싸는 클래스"
라는 개념이라는 걸 이해하게 되었다.
특히:
- 기본형 → 값 자체 저장
- 참조형 → 객체 주소 저장
- 오토박싱 / 오토언박싱
개념이 꽤 중요하다는 느낌이 들었다 😊
'Java' 카테고리의 다른 글
| JAVA 기초 정리 - 객체지향 (final, 인터페이스, 캡슐화, 상속) (0) | 2026.06.08 |
|---|---|
| JAVA 기초 정리 - static과 인스턴스 멤버란? (0) | 2026.06.05 |
| JAVA 기초 정리 - JVM 메모리 영역 (0) | 2026.05.20 |
| JAVA 기초 정리 - 클래스(Class)와 객체(Object) (0) | 2026.05.19 |
| JAVA 기초 정리 - 메서드(Method) (0) | 2026.05.18 |