Back-End/Java

[자바/JAVA] 래퍼 클래스(Wrapper Class)

728x90

 래퍼 클래스(Wrapper Class) 란? 

자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(Reference type)으로 나누어진다. 대표적인 기본 타입으로 char, int, float, double, boolean 등이 있고 참조 타입으로 class, interface 등이 있는데 간혹 기본 타입의 데이터를 객체로 표현해야 하는 경우가 있다. 이럴 때 기본 자료 타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(Wrapper class)라고 한다. 자바에서 모든 기본타입은 값을 갖는 객체를 생성할 수 있는데, 이런 객체를 포장 객체라고 한다. 이 객체는 기본 타입의 값을 내부에 두고 포장을 하기 때문에 그렇게 불리는데, 래퍼 클래스로 감싸고 있는 기본 타입 값은 외부에서 변경할 수 없다. 만약 값을 변경하고 싶다면 새로운 포장 객체를 만들어야 한다.

래퍼 클래스의 종류 🔥

- char, int 타입을 제외한 나머지 타입들은 첫 글자를 대문자로 바꾼 이름을 가집니다.

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

래퍼 클래스 구조도

위의 그림처럼 래퍼 클래스의 모든 조상은 Object이고, 숫자를 다루는 래퍼 클래스의 부모 클래스는 Number 클래스이다.

박싱(Boxing) & 언박싱(UnBoxing)

 박싱(Boxing)이란 기본 타입의 데이터를 래퍼 클래스의 인스턴스로 변환하는 과정을 말하고

 언박싱(UnBoxing) 이란 래퍼 클래스의 인스턴스에 저장된 값을 기본 타입의 데이터로 꺼내는 것을 말합니다.

Integer num = new Integer(100);
int num2 = num.intValue()

오토 박싱(AutoBoxing) & 오토 언박싱(AutoUnBoxing)

컴파일러에 의해 자동으로 처리되는 박싱과 언박싱을 말합니다.

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(100); // list.add(new Integer(100)); 오토박싱

int num = list.get(0); // 오토 언박싱

래퍼 클래스 값 비교

래퍼 클래스도 객체이므로 동등 연산자(==)를 사용하게 되면, 두 인스턴스의 값을 비교하는 것이 아니라

두 인스턴스의 주소값을 비교하게 됩니다.

따라서 서로 다른 두 인스턴스를 동등 연산자(==)로 비교하게 되면, 언제나 false 값을 반환되게 됩니다.

그러므로 인스턴스에 저장된 값의 동등 여부를 정확히 판단하려면  equals() 메소드를 사용해야만 합니다.

728x90