Wrapper 클래스

Kyu·2021년 2월 1일
0

Java 공부기록

목록 보기
26/40

정의

기본자료형을 객체 자료형을 사용할 수 있도록 만들어 놓은 자료형 (포장 클래스)

왜 객체자료형이 필요한가?

프로그램에 따라 기본 타입의 데이터를 객체로 취급해야 하는 경우가 있습니다.
예를 들어, 메소드의 인수로 Object 타입만이 요구되면, 기본 타입의 데이터를 그대로 사용할 수는 없습니다.
이때에는 기본 타입의 데이터를 먼저 객체로 변환한 후 작업을 수행해야 합니다.
http://www.tcpschool.com/java/java_api_wrapper

래퍼 클래스(Wrapper class)는 산술 연산을 위해 정의된 클래스가 아니므로, 인스턴스에 저장된 값을 변경할 수 없습니다.
단지, 값을 참조하기 위해 새로운 인스턴스를 생성하고, 생성된 인스턴스의 값만을 참조할 수 있습니다.
http://www.tcpschool.com/java/java_api_wrapper

img_java_boxing_unboxing

오토 박싱 & 오토 언박싱

위의 그림과 같이 기본 타입의 데이터를 래퍼 클래스의 인스턴스로 변환하는 과정을 박싱(Boxing)이라고 합니다.
반면 래퍼 클래스의 인스턴스에 저장된 값을 다시 기본 타입의 데이터로 꺼내는 과정을 언박싱(UnBoxing)이라고 합니다.
http://www.tcpschool.com/java/java_api_wrapper

자바 초창기에는 기본자료형을 Object[] 배열에 저장할 경우에 박싱을 해줘야하기 때문에 다음과 같이 선언하였습니다.

Object[] obj = new Object[3];
obj[0] = new Integer(1);
obj[1] = new Integer(2);
obj[2] = new Integer(3);

JDK 1.5부터는 박싱과 언박싱이 필요한 상황에서 자바 컴파일러가 이를 자동으로 처리해 줍니다.
이렇게 자동화된 박싱과 언박싱을 오토 박싱(AutoBoxing)과 오토 언박싱(AutoUnBoxing)이라고 부릅니다.
그래서 다음과 같은 코드를 작성해도 오토박싱되어서 에러를 일으키지 않습니다.

Object[] obj = new Object[3];
obj[0] = 1;
obj[1] = 2;
obj[2] = 3;
profile
TIL 남기는 공간입니다

0개의 댓글