래퍼 클래스 (Wrapper Class)
자바의 자료형은 기본 타입(primitive type)과 참조 타입(reference type) 으로 나누어진다.
기본 타입은 정수, 실수, 문자, 논리 리터럴을 저장하는 타입이다.
참조 타입은 배열, 열거, 클래스, 인터페이스 등 객체의 위치를 참조하는 타입니다.
기본 타입 : byte, short, char, int, long, float, double, boolean
참조 타입 : class, interface, ...
래퍼 클래스란 8개의 기본 타입에 해당하는 데이터를 객체로 표현하기 위해 포장해주는 클래스라고 한다.
각각의 타입에 해당하는 데이터를 인수로 전달받아 해당 값을 가지는 객체로 만들어준다.
래퍼 클래스는 모두 java,lang 패키지에 포함되어 제공된다.
래퍼 클래스 특징으로는
기본 타입은 값을 갖는 객체인 포장 객체를 생성할 수 있다.
래퍼 클래스는 각 타입에 해당하는 데이터를 파라미터로 전달받아 해당 값을 가지는 객체로 만들어준다.
래퍼 클래스로 감싸고 있는 기본 타입 값은 외부에서 변경할 수 없다.
변경하기 위해서는 새로운 포장 객체를 만들어야 한다.
간단하게 말해 래퍼 클래스란 기본 타입의 객체화를 말한다.
자바의 8개의 기본 타입에 대한 래퍼 클래스는 다음과 같다.
기본 타입 | 래퍼 클래스 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
확인해보면 int, char 타입을 제외한 나머지 기본 타입은 첫 번째 단어를 대문자로 바꿔주었고
int 와 char 타입은 Integer, Character 로 바뀌어 사용되는 것을 확인해볼 수 있다.
박싱 (Boxing) 과 언박싱 (UnBoxing)
래퍼 클래스는 산술 연살을 위해 정의된 클래스가 아니다.
따라서, 인스턴스에 저장된 값을 변경할 수 없다.
값을 참조하기 위해 새로운 인스턴스를 생성하고 생성된 인스턴스의 값만을 참조할 수 있다.
박싱과 언박싱에 대해 간단하게 설명해보면
박싱 : 기본타입의 데이터 -> 래퍼 클래스의 인스턴스로 변환하는 과정
언박싱 : 래퍼 클래스의 인스턴스에 저장된 값 -> 기본 타입의 데이터로 꺼내는 과정
코드를 통해 확인해보자.
// 박싱
// Integer 래퍼 클래스 num 에 21 의 값을 저장
Integer num = new Integet(21);
// 언박싱
// 래퍼 클래스 num 의 값을 꺼내 가져온다.
int n = num.intValue();
JDK 1.5 부터는 박싱과 언박싱이 필요한 상황에 자바 컴파일러가 자동으로 처리해준다.
자동화된 박싱과 언박싱을 오토 박싱 (AutoBoxing) 과 오토언박싱 (AutoUnBoxing) 이라고 부른다.
// 오토 박싱
Integer num = 21;
// 오토 언박싱
int n = num;
- 참고 사이트 -
http://tcpschool.com/java/java_api_wrapper
https://velog.io/@guswns3371/Wrapper-Class란
https://flatsun.tistory.com/77
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java 캡슐화 (Encapsulation) 개념 정리 (3) | 2021.07.23 |
---|---|
Java 상속(inheritance) 기본 개념 정리 (1) | 2021.07.19 |
Java this 의미와 사용법 (2) | 2021.07.17 |
Java 가상 머신 (JVM, Java Virtual Machine) (0) | 2021.07.17 |
Java 기본 타입 (Primitive Type)과 참조 타입(Reference Type) (0) | 2021.07.17 |