포장클래스 (래퍼 포장클래스 (Wrapper 클래스)
자바에서는 기본타입(int, short, long, float 등)의 값을 갖는 객체를 생성할 수 있다. 이런 객체를 포장객체라고 한다.
| 기본타입 | 포장 클래스 |
| byte | Byte |
| char | Character |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| boolean | Boolean |
포장객체는 포장하고 있는 기본 타입의 값을 변경할 수 없고, 단지 객체로 생성하는데 목적이 있다.
박싱과 언박싱
박싱: 기본 타입의 값을 포장 객체로 만드는 과정
언박싱: 포장 객체에서 기본 타입의 값을 얻어내는 과정
Integer obj = 100;
위 식이 성립하려면 obj는 참조변수이기 때문에 값이 속해있는 메모리 번지값을 가져야 한다.
하지만 100은 객체가 아닌 값이기 때문에 넣을 수 없지만 100을 Integer객체로 변환하는 박싱이 일어난다.
int value = obj;
위 식도 마찬가지로 자동 언박싱이 일어나고 있다.
포장 값 비교
포장객체는 내부 값을 비교할때 ==와 != 연산자를 사용할 수 없다. 이 연산은 내부의 값을 비교하는 것이 아니라 포장객체의 메모리 번지값을 비교하기 때문이다.
Integer obj1 = 300;
Integer obj2 = 300;
obj == obj2 ---> false가 나온다.
포장 객체의 사용 이유
1. 컬렉션 프레임워크 사용
자바의 컬렉션 프레임워크(List, Set, Map 등)는 객체만을 저장할 수 있습니다. 기본 데이터 타입은 객체가 아니므로 컬렉션에 저장할 수 없습니다. 따라서, 기본 타입을 객체로 변환하는 래퍼 클래스를 사용하여 컬렉션에 데이터를 저장할 수 있습니다. 예를 들어, ArrayList<int>는 사용할 수 없지만, ArrayList<Integer>는 가능합니다.
2. 기본 타입과 객체 타입 간의 변환
래퍼 클래스는 기본 타입을 객체로 변환할 수 있는 기능을 제공합니다. 이를 **박싱(Boxing)**이라고 합니다. 반대로, 래퍼 객체에서 기본 타입으로 변환하는 것을 **언박싱(Unboxing)**이라고 합니다. 자바 5부터는 **오토 박싱(Auto Boxing)**과 오토 언박싱(Auto Unboxing) 기능이 도입되어, 개발자가 명시적으로 변환할 필요 없이 자동으로 처리됩니다.
int primitiveValue = 10;
Integer wrapperObject = primitiveValue; // 오토 박싱
int unboxedValue = wrapperObject; // 오토 언박싱
3. 기본 타입의 유틸리티 메서드 제공
래퍼 클래스는 각 타입에 관련된 유용한 메서드를 제공합니다. 예를 들어, Integer 클래스에는 문자열을 숫자로 변환하는 parseInt() 메서드가 있고, Double 클래스에는 parseDouble() 메서드가 있습니다. 이처럼, 기본 타입에 관련된 다양한 유틸리티 메서드를 사용할 수 있게 합니다.
String number = "123";
int result = Integer.parseInt(number);
4. null 값 사용
기본 타입은 null 값을 가질 수 없지만, 래퍼 클래스는 객체이기 때문에 null 값을 가질 수 있습니다. 이 기능은 객체가 null일 수 있는 상황에서 매우 유용합니다. 예를 들어, 데이터베이스에서 값을 읽어올 때 값이 존재하지 않으면 null로 처리할 수 있습니다.
'Java' 카테고리의 다른 글
| [JAVA] JVM 역할 및 내부구조 (1) | 2025.05.08 |
|---|---|
| Thread 동기화와 안전 종료 (0) | 2025.03.02 |
| [JAVA] 람다식 (0) | 2024.10.26 |
| [JAVA] final 클래스와 final 메서드 (3) | 2024.10.18 |
| [JAVA] 싱글톤 패턴 (0) | 2024.10.18 |