forest_moon
[JAVA]래퍼 클래스(Wrapper Class)? 본문
Wrapper Class란?
자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 나누어진다.
기본 타입은 char, int, float, double, boolean 등이 있고,
참조 타입은 class, interface 등이 있다.
래퍼 클래스란 8개의 기본 타입에 해당하는 데이터를 객체로 표현하기 위해 포장해주는 클래스라고 한다.
자바는 모든 기본타입(primitive type)은 값을 갖는 객체를 생성할 수 있습니다. 이런 객체를 포장 객체라고도 하는데 그 이유는 기본 타입의 값을 내부에 두고 포장하기 때문입니다. 래퍼 클래스로 감싸고 있는 기본 타입 값은 외부에서 변경할 수 없습니다. 만약 값을 변경하고 싶다면 새로운 포장 객체를 생성해야 한다.
래퍼 클래스는 모두 java,lang 패키지에 포함되어 제공된다.
래퍼 클래스의 종류
기본타입(primitive type) | 참조타입 ( wrapper class) |
byte | Byte |
char | Character |
int | Integer |
float | Float |
double | Double |
boolean | Boolean |
long | Long |
short | Short |
char타입과 int타입이 각각 Character와 Integer의 래퍼 클래스를 가지고 있고 나머지는 기본 타입의 첫 글자를 대문자로 바꾼 이름을 가지고 있습니다.
Wrapper Class 구조
Object class : 모든 Wrapper class 의 부모클래스이다.
Number class : 내부적으로 숫자룰 다루는 wrapper class들의 부모 클래스
박싱 (Boxing) 과 언박싱 (UnBoxing)
- 기본타입의 값을 포장객체로 만드는 과정을 박싱이라고 한다. 반대로 포장객체에서 기본타입의 값을 얻어내는 과정을 언박싱이라고 한다.
Integer num = new Integer(1); // << 박싱
//Integer 래퍼클래스 num에 1 을 저장
int n = num.intvalue(); // << 언박싱
// 래퍼클래스 num의 값을 꺼내 기본 타입 데이터로 가져온다
자동 박싱(AutoBoxing)과 자동 언박싱(AutoUnBoxing)
JDK 1.5부터는 박싱과 언박싱이 필요한 상황에서 자바 컴파일러가 이를 자동으로 처리해 준다.
이렇게 자동화된 박싱과 언박싱을 오토 박싱(AutoBoxing)과 오토 언박싱(AutoUnBoxing)이라고 한다.
자동 박싱의 포장 클래스 타입에 기본값이 대입될 경우에 발생합니다.
예를 들어 int타입의 값을 Integer클래스 변수에 대입하면 자동 박싱이 일어나 힙 영역에 Integer객체가 생성됩니다.
Integer num = new Integer(17); // 박싱
int n = num.intValue(); // 언박싱
Character ch = 'X'; // Character ch = new Character('X'); : 오토박싱
char c = ch; // char c = ch.charValue(); : 오토언박싱
위의 예제에서 볼 수 있듯이 래퍼 클래스인 Interger 클래스와 Character 클래스에는 각각 언박싱을 위한 intValue() 메소드와 charValue() 메소드가 포함되어 있습니다.
또한, 오토 박싱을 이용하면 new 키워드를 사용하지 않고도 자동으로 Character 인스턴스를 생성할 수 있습니다.
반대로 charValue() 메소드를 사용하지 않고도, 오토 언박싱을 이용하여 인스턴스에 저장된 값을 바로 참조할 수 있습니다.
Reference
'JAVA' 카테고리의 다른 글
[JAVA] replace() 과 replaceAll() (0) | 2023.03.10 |
---|---|
[JAVA]자바,입문정리 (0) | 2023.02.27 |
[JAVA] 자바의 HashMap (0) | 2023.02.18 |
객체지향이란? (0) | 2023.02.06 |
가비지컬렉션(Garbage Collection)이란? (0) | 2023.02.01 |