래퍼 클래스(Wrapper Class)?
자바의 자료형은 기본 타입(primitive type)과 참조 타입(reference type)으로 나뉜다.
- 기본 타입 : char, int, float, double, boolean, long, short 등
- 참조 타입 : class, interface 등
기본 자료 타입을 객체로 사용하기 위해서 래퍼 클래스(wrapper class)가 존재한다.
래퍼 클래스 종류
int와 char만 Integer, Character 이름이 다른 래퍼 클래스이고,
나머지는 기본 타입의 첫 글자를 대문자로 바꾼 이름을 가지고 있다.
기본 타입 | 래퍼 클래스 |
---|---|
byte | Byte |
char | Character |
int | Integer |
float | Float |
double | Double |
boolean | Boolean |
박싱, 언박싱
박싱 : 기본 타입 → 래퍼 클래스로 변환
언박싱 : 래퍼 클래스 → 기본 타입으로 변환
JDK 1.5부터는 자바 컴파일러가 자동으로 박싱, 언박싱을 처리해 준다.
// 박싱
Integer num = new Integet(10);
// 언박싱
int n = num.intValue();
래퍼 클래스 동등비교
int num1 = 10;
Integer num2 = new Integer(10);
Integer num3 = new Integer(10);
// 기본 타입, 래퍼클래스
num1 == num2; // true
num1.equals(num2); // true
// 래퍼클래스, 래퍼클래스
num2 == num3; // false
num2.equals(num3); // true
래퍼 클래스와 기본 타입은 컴파일러가 자동으로 오토박싱, 언박싱을 처리해 주기 때문에 비교 가능하다.
래퍼 클래스는 객체이므로 ‘==’을 사용하면 주소 값을 비교하게 된다.
따라서 인스턴스에 저장된 값의 동등 비교를 하려면 ‘equals()’를 사용해야 한다.
래퍼 클래스 사용하는 이유
- java.util 패키지의 클래스는 객체만 처리
- Collection 프레임 워크의 데이터 구조는 객체만 저장
- 래퍼 클래스를 사용하여 자동 박싱, 언박싱이 일어남
List<Integer> list = new ArrayList<>();
list.add(50); // 자동 박싱
'언어(Language) > Java' 카테고리의 다른 글
[Java] 자바 StringTokenizer 클래스 메서드 정리 (1) | 2024.10.08 |
---|---|
[Java] length, length(), size() 차이점 (0) | 2024.09.27 |