Wrapper Class
기본 자료형(primitive type)을 객체(object)로 감싸서 사용할 수 있게 해주는 클래스이다.
간단히 말해서, 기본형 데이터를 객체로 다뤄야 할 때 사용하는 클래스이다.
public final class Integer extends Number
implements Comparable<Integer>, Constable, ConstantDesc {
..
private final int value;
..
{
Wrapper Class는 객체 생성 시, 생성자의 인자를 통해 각 자료형에 알맞은 값을 내부적으로 저장하고, 편리한 데이터 처리를 위한 여러 메서드가 정의되어있다.
Wrapper Class가 필요한 이유
1. 자바의 컬렉션 프레임워크 (예: List, Map, Set.. 등)는 객체만 다룰 수 있기 때문에, 기본형을 그대로 사용 할 수 없다. 이럴 때 기본형을 객체로 감싸는 Wrapper 클래스가 필요하다.
2. 기본형은 객체처럼 속성과 기능을 가질 수 없지만, 객체는 기능을 제공한다. 따라서 Wrapper Class를 통해 편리하게 데이터 처리를 할 수 있다.
기본형과 Wrapper Class
기본형(primitive type) | Wrapper Class |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
Wrapper Class 활용
- 컬렉션 (List, Set, Map.. 등)에 값을 저장할 때 사용한다.
- 객체로 데이터를 처리해야 할 때 사용한다.
- null 값을 다루고 싶을 때 사용한다. (primitive type은 null 허용 안된다.)
- 문자열을 숫자로 변환할 때 사용한다. (Integer.parseInt("123) 등)
사용 예제
int num = 10; // 기본형
ArrayList<Integer> list = new ArrayList<>();
list.add(num); // [10]
다음은 컬렉션에 Wrapper Class(Integer)가 값(int)을 저장할 때 사용된 상황이다.
여기서 의문이 들 수 있다. num은 int 형이고 list는 Integer인데 어떻게 값이 저장이 되는지 이해하려면, 오토박싱(Auto-boxing)과 언박싱(Unboxing)에 대해서 알아야 한다.
오토박싱 & 언박싱
1. 오토박싱
사용 예제 코드를 풀어서 오토박싱에 대해서 설명 하겠다.
int num = 10; // 기본형
Integer wrappedNum = Integer.valueOf(num);
ArrayList<Integer> list = new ArrayList<>();
list.add(wrappedNum);
ArrayList<Integer>는 객체 타입인 Integer만 받을 수 있다.
num은 기본형인 int라서 자바가 자동으로 내부적으로 Integer.valueOf(num)을 호출한다. (int에서 Integer로 바꿔주는 과정이다.)
이 과정이 바로 오토박싱(Auto-boxing)이다.
2. 언박싱
Integer obj = 20; // 오토박싱: int → Integer
int num = obj; // 언박싱: Integer → int
//int num = obj.intValue();
자바가 자동으로 obj.intValue()를 호출해서 기본형으로 변환해준다.
ArrayList<Integer> list = new ArrayList<>();
list.add(100); // 오토박싱
int value = list.get(0) // 언박싱
ArrayList<Interger>에 첫 번째 값을 얻어올 때, 자바에서 내부적으로 list.get(0) 값에 intValue()를 호출하여 Integer를 int 형으로 바꿔준다.
3. 궁금한 점
(내부적으로 처리되는 방식)
자바의 오토박싱과 언박싱은 자바 컴파일러(Javac)가 소스 코드를 자동으로 바꿔준다. 이렇게 코드를 짜면
Integer obj = 10; // 오토박싱
int value = obj; // 언박싱
컴파일러가 자동으로 아래처럼 변환해서 처리한다.
Integer obj = Integer.valueOf(10); // 오토박싱
int value = obj.intValue(); // 언박싱
(메서드가 정의 되어 있는 곳)
각 Wrapper Class들 안에 .valueOf(), .intValue()와 같은 메서드가 이미 정의되어 있다.
https://kimyongjun0129.tistory.com/98
[Java] Collection이란?
JCF (Java Collections Framework) :데이터(객체)들을 효율적으로 저장하고, 처리하고, 관리하기 위한 자료 구조들을 제공하는 프레임워크를 말한다. 쉽게 말해서, 많은 데이터를 한꺼번에 다룰 때 사용하
kimyongjun0129.tistory.com
'JAVA' 카테고리의 다른 글
[Java] 추상 클래스(abstract class)란? (0) | 2025.04.16 |
---|---|
[Java] 오버라이딩(overriding)이란? (0) | 2025.04.16 |
[Java] 상속(Inheritance)이란? (0) | 2025.04.15 |
[Java] Queue 자료구조와 Queue 인터페이스란? (0) | 2025.04.15 |
[Java] Set 자료구조와 Set 인터페이스란? (0) | 2025.04.14 |