[JAVA] 래퍼클래스, 박싱(boxing) & 언박싱(unboxing)

손효재·2021년 10월 23일
0

Java

목록 보기
1/4

java의 기본 자료형(Primitive Type)     래퍼 클래스 (Wrapper Class)

boolean                   Boolean
short                     Short
int                      Integer
long                     Long
float                     Float
double                     Double
char                     Character
byte                     Byte

자바에서는 8개의 기본형을 객체로 다루지 않는데, 래퍼클래스를 이용하여 기본형 값을 객체로 다룰 수 있다.

래퍼 클래스 (Wrapper Class)

제네릭 타입에는 원하는 자료형을 지정할 수 있는데, 기본 자료형은 넣지 못한다.
제네릭 타입에 넣기 위해서는 기본형(원시형)을 담아낼 수 있는 클래스를 넣어야 한다.
즉, 기본형(원시형)을 객체화한 것을 넣어야 하는데 이를 래퍼클래스 라고한다.
기본타입에 해당하는 데이터를 객체로 포장해주는 클래스이다.

박싱은 int나 float같은 기본형을 객체 안에 넣어주는 일이고, 언박싱은 넣었던 기본형 값을 다시 빼내는 일을 말한다.
그리고 이 박싱을 지원해주는 Integer같은 클래스들을 무엇인가를 감싸준다는 의미에서 래퍼(wrapper)클래스라고 한다.

박싱 (boxing)

기본 자료형의 데이터를 대응되는 래퍼 클래스로 만드는 동작을 의미한다.

Integer a = new Integer(7);

오토 박싱 (auto boxing)

JDK 1.5 부터는 java 컴파일러가 자동으로 정수 7을 new Integer(7)로 처리해 준다.
* 내부적으로 생성하기 때문에 메모리를 더 많이 차지한다.

Integer a = 7;

언박싱 (Unboxing)

래퍼클래스를 기본형으로 바꾸는 것을 말한다.
래퍼클래스를 intValue()메서드를 사용하여 기본형으로 변환하고 y라는 기본형 변수에 대입했다.

Integer a = new Integer (7);
int b = a.intValue();

오토 언박싱 (auto unboxing)

JDK 1.5 부터는 내부적으로 java 컴파일러가 자동으로 처리해 준다.

Integer a = new Integer(7);
int b = a;

자바에서 모든 객체는 힙(Heap)영역에 저장 된다.
int나 char같은 변수들(기본 자료형)은 클래스 변수로 선언되어 인스턴스 안에 포함되거나 static으로 선언되지 않았다면 모두 스택(STACK)영역에 저장된다.

그럼에도 기본형을 사용하는 이유는?
힙은 스택에서 불러올 때보다 상대적으로 속도가 떨어지기 때문에, 단순값만을 가진 객체인 래퍼클래스를 사용할 이유가 없다.

0개의 댓글