본문 바로가기

JAVA

[Java] Wrapper Class란?

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