래퍼 클래스(Wrapper class)란?
프리미티브 데이터 타입을 객체로 감싸는 클래스를 가리킨다. 자바에서는 프리미티브 데이터 타입(ex: int, double, boolean)과 객체로 다룰 수 있는 데이터 타입(ex: Integer, Double, Boolean)을 구분한다. 래퍼 클래스는 이러한 프리미티브 데이터 타입을 객체로 다룰 수 있도록 하며, 자바의 객체 지향 특성을 유지하면서 프리미티브 데이터를 객체로 다룰 수 있게 한다.
정수 데이터 타입을 객체로 다루기 위한 래퍼 클래스이다. 예를 들어, int 대신 Integer를 사용하여 정수 값을 표현하고 다양한 메서드를 활용할 수 있다.
Integer number = 42;
int primitiveNumber = number.intValue(); // 객체를 다시 프리미티브로 변환
각각 실수, 긴 정수, 짧은 정수, 바이트 데이터 타입을 객체로 다루기 위한 래퍼 클래스이다. 사용 방법은 Integer와 유사하다.
불리안 데이터 타입을 객체로 다루는 래퍼 클래스이다. true 또는 false 값을 표현하고 다양한 불리안 연산을 수행할 수 있다.
Boolean boolValue = true;
boolean primitiveBool = boolValue.booleanValue(); // 객체를 다시 프리미티브로 변환
문자 데이터 타이을 객체로 다루는 클래스이다. 문자를 표현하고 다양한 문자 관련 작업을 수행할 수 있다.
Character ch = 'A';
char primitiveChar = ch.charValue(); // 객체를 다시 프리미티브로 변환
래퍼 클래스(Wrapper classes) 추가 설명
프리미티브 데이터 타입은 기본값을 가지므로, 어떤 값도 가지지 않는 경우를 나타내는 null을 대신할 수 없다. 래퍼 클래스를 사용하면 null을 값으로 가질 수 있어, 데이터가 없음을 나타낼 때 유용하다.
컬렉션(ex: 리스트, 맵)과 같은 자료구조는 객체만을 저장할 수 있다. 따라서 프리미티브 데이터 타입을 저장하려면 래퍼 클래스를 사용해야 한다. 또한 제네릭 코드에서 일반적인 객체로 사용된다.
래퍼 클래스를 사용하면 프리미티브 데이터 타입을 객체로 다룰 수 있으며, 이로써 다양한 메서드 호출 및 객체 지향 프로그래밍의 장점을 활용할수 있다.
자바에서는 래퍼 클래스와 프리미티브 데이터 타입 간의 자동 변환을 제공한다. 이를 오토박싱과 언박싱이라고 하며, 개발자가 직접 형변환을 하지 않고도 프리미티브 데이터 타입과 래퍼 클래스 사이를 변환할 수 있다.
예를 들어, int를 Integer로 변환하거나, Integer를 int로 변환할 때 다음과 같이 사용할 수 있다.
// 오토박싱
Integer wrappedInt = 42;
// 언박싱
int primitiveInt = wrappedInt;
래퍼 클래스의 주요 예시)
Integer: int의 래퍼 클래스
Double: double의 래퍼 클래스
Boolean: boolean의 래퍼 클래스
Character: char의 래퍼 클래스
Long: long의 래퍼 클래스
Float: float의 래퍼 클래스
Short: short의 래퍼 클래스
Byte: byte의 래퍼 클래스