728x90
728x90
자바 Wrapper 클래스: 기본형을 객체로 포장하다
왜 Wrapper 클래스가 필요할까요?
자바는 기본형(primitive type)과 참조형(reference type)이라는 두 가지 종류의 데이터 타입을 지원합니다. 기본형은 int, double, char 등과 같이 메모리에 직접 값이 저장되는 간단한 타입이고, 참조형은 객체를 가리키는 주소값이 저장되는 복잡한 타입입니다.
하지만 기본형은 객체처럼 다양한 메소드를 호출하거나 컬렉션에 저장할 수 없다는 단점이 있습니다. 이러한 제약을 해결하기 위해 등장한 것이 바로 Wrapper 클래스입니다. Wrapper 클래스는 기본형을 감싸서 객체처럼 만들어주는 역할을 합니다.
Wrapper 클래스의 종류
기본형Wrapper 클래스
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
Wrapper 클래스의 주요 기능
- 자동 박싱(autoboxing): 기본형을 Wrapper 클래스 객체로 자동 변환하는 기능입니다
int num = 10; Integer numObj = num; // 자동 박싱
- 자동 언박싱(auto-unboxing): Wrapper 클래스 객체를 기본형으로 자동 변환하는 기능입니다.
Integer numObj = 10; int num = numObj; // 자동 언박싱
- 다양한 유틸리티 메소드 제공: Wrapper 클래스는 각 기본형에 대한 다양한 유틸리티 메소드를 제공합니다. 예를 들어, Integer 클래스는 parseInt() 메소드를 통해 문자열을 정수로 변환하거나, valueOf() 메소드를 통해 정수를 문자열로 변환할 수 있습니다.
String str = "123"; int num = Integer.parseInt(str); int num = 123; String str = Integer.valueOf(num).toString();
- 컬렉션에 추가: Wrapper 클래스 객체는 List, Set, Map 등의 컬렉션에 추가할 수 있습니다.
List<Integer> numbers = new ArrayList<>(); numbers.add(10); numbers.add(20);
Wrapper 클래스 활용 예시
- 컬렉션 프레임워크: List, Set, Map 등의 컬렉션은 객체만 저장할 수 있으므로, 기본형을 Wrapper 클래스로 변환하여 저장해야 합니다.
- 제네릭: 제네릭 타입 파라미터는 참조형만 허용하므로, 기본형을 Wrapper 클래스로 변환하여 사용해야 합니다.
- 자바 스트림 API: 스트림 연산은 참조형만 지원하므로, 기본형을 Wrapper 클래스로 변환하여 사용해야 합니다.
왜 Wrapper 클래스를 사용해야 할까요?
- 객체 지향 프로그래밍: 기본형을 객체처럼 다룰 수 있어 객체 지향 프로그래밍의 장점을 활용할 수 있습니다.
- 컬렉션 사용: 컬렉션에 기본형을 저장할 수 있도록 해줍니다.
- 유틸리티 메소드: 다양한 유틸리티 메소드를 제공하여 편리하게 사용할 수 있습니다.
- 자동 박싱/언박싱: 코드를 간결하게 작성할 수 있도록 해줍니다.
주의할 점
- 자동 박싱/언박싱 오버헤드: 자동 박싱/언박싱은 성능에 약간의 오버헤드를 발생시킬 수 있습니다. 성능이 중요한 부분에서는 직접 변환하는 것이 더 효율적일 수 있습니다.
- null 값: Wrapper 클래스는 null 값을 가질 수 있습니다. null 값을 참조하면 NullPointerException이 발생할 수 있으므로 주의해야 합니다.
결론
Wrapper 클래스는 자바 프로그래밍에서 기본형을 객체처럼 다루기 위한 필수적인 개념입니다. 컬렉션 사용, 제네릭, 스트림 API 등 다양한 상황에서 활용될 수 있으며, 객체 지향 프로그래밍의 장점을 더욱 효과적으로 활용할 수 있도록 도와줍니다.
728x90
728x90
'Java를 배워보자 > 4. 자바 API' 카테고리의 다른 글
자바 Collection 프레임워크 (List, Set, Map) (0) | 2024.09.27 |
---|---|
자바 Date 클래스 (0) | 2024.09.27 |
자바 Math 클래스 (0) | 2024.09.26 |
자바 String 클래스 (0) | 2024.09.26 |
자바 API 소개 (0) | 2024.09.26 |