티스토리 뷰
728x90
반응형
Wrapper Class란?
- 자바 API 클래스 중 하나입니다.
- 자바의 자료형은 primitive type(기본 타입)과 reference type(참조 타입)으로 나누어집니다.
- Primitive type - byte, short, char, int, float, double, boolean
- Reference type - class, interface 등등
- 8개의 Primitive type에 해당하는 데이터를 객체로 표현하기 위해 포장해주는 클래스가 바로 Wrapper Class입니다.
언제 사용될까?
- 주로 매개변수로 객체를 요구하고, 기본 데이터형이 아닌 객체로 저장해야 할 때, 객체간 비교가 필요할 때 등등의 경우에 Wrapper 클래스가 이용됩니다.
- 예를 들어 특정 객체를 한 곳에 모아 관리하기 편하게 하기 위해 제공되는 Collections Framework에서는 객체 형태만 다를 수 있기 때문에 기본 데이터를 이용할 때는 데이터 형식에 따른 Wrapper 객체로 생성하여 이용합니다.
- 문자열로 생성된 타입을 기본 데이터형으로 변경할 때도 Wrapper 클래스를 사용합니다.
Wrapper Class 종류
Wrapper Class의 사용 방법
Case 01 - Boolean객체를 new 생성자를 이용하여 생성할 수 있습니다.
- wb1과 wb2는 boolean이라는 형태는 같지만 각각 Heap영역에 생성이 되므로 다른 객체입니다.
boolean b = true;
Boolean wb1 = new Boolean(true);
Boolean wb2 = new Boolean(false);
Case 02 - Integer객체를 new 생성자를 이용하여 생성할 수 있습니다.
- new 키워드를 사용한 Integer와 사용하지 않은 Integer가 있지만 각각 Heap영역에 생성되므로 다른 객체로 인식하게 됩니다.
Integer i1 = new Integer(10);
Integer i2 = 10;
Case 03 - Wapper 객체에 정의된 static 메서드인 parseInt()와 valueOf() 메서드를 이용하여 객체를 생성할 수 있습니다.
- 두 메서드의 차이는 parseInt()는 반환값이 기본 데이터형인 반면, valueOf()는 객체형입니다.
int i1 = Integer.parseInt("100");
int i2 = Integer.valueOf("100");
System.out.println(i1 == i2); // true
Wrapper Class : AutoBoxing & UnBoxing
- 기본 데이터형을 객체화하여 사용하기 위해서는 귀찮은 작업을 몇번이고 반복해야합니다. 그렇기 때문에 자바에서는 오토박싱과 오토언박싱이라는 기능을 컴파일러가 자동으로 해줍니다.
- Boxing - 기본 타입의 데이터를 Wrapper class의 인스턴스로 변환하는 과정
-
Integer number = new Integer(10);
-
- UnBoxing - Wrapper class의 인스턴스에 저장된 값을 기본 타입의 데이터로 꺼내는 과정
-
int n = number.intValue();
-
AutoBoxing & AutoUnBoxing
- AutoBoxing = 자동화된 Boxing
-
Integer number = 10;
-
AutoUnBoxing = 자동화된 UnBoxing
-
int n = number;
-
예제
// Boxing & UnBoxing
Integer number = new Integer(10); // Boxing
int n = number.intValue(); // UnBoxing
// AutoBoxing & AutoUnBoxing
Integer number = 10; // AutoBoxing
int n = number; // AutoUnBoxing
Wrapper Class 의 비교연산 (==, equals)
- Wrapper class는 생성시 각각 Heap영역에 생성되므로 동일한 Wapper class끼리는 동등 연산자로는 판단을 할 수 업습니다.
- equals() 메서드를 사용하면 같은 형태? 이므로 판단은 할 수 있습니다.
Integer number1 = new Integer(10);
Integer number2 = new Integer(10);
int number3 = 10;
System.out.println("래퍼클래스 == 기본타입 : " + (number1 == number3)); // true
System.out.println("래퍼클래스.equals(기본타입) : " + (number1.equals(number3))); // true
System.out.println("래퍼클래스 == 래퍼클래스 : " + (number1 == number2)); // false
System.out.println("래퍼클래스.equals(래퍼클래스) : " + (number1.equals(number2))); // true
728x90
반응형
'JAVA > JAVA기본' 카테고리의 다른 글
JAVA - 연산자란? (0) | 2021.12.13 |
---|---|
JAVA - 불변객체(Immutable Object)란(feat.final)? (0) | 2021.12.12 |
JAVA - 변수 (feat.스코프와 라이프 타임 & 타입 변환, 캐스팅, 프로모션) (0) | 2021.12.08 |
JAVA - 프리미티브 타입이란? (feat.레퍼런스 타입) (0) | 2021.12.08 |
JAVA - 리플렉션 (Reflection)이란? (0) | 2021.11.28 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- redis 대기열 구현
- java ThreadLocal
- transactional outbox pattern spring boot
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- spring boot redisson sorted set
- microkernel architecture
- 서비스 기반 아키텍처
- 공간 기반 아키텍처
- transactional outbox pattern
- spring boot 엑셀 다운로드
- 람다 표현식
- 트랜잭셔널 아웃박스 패턴 스프링부트
- 레이어드 아키텍처란
- redis sorted set
- spring boot redisson 분산락 구현
- polling publisher spring boot
- pipeline architecture
- spring boot excel download oom
- spring boot redisson destributed lock
- pipe and filter architecture
- spring boot excel download paging
- service based architecture
- @ControllerAdvice
- redis sorted set으로 대기열 구현
- 자바 백엔드 개발자 추천 도서
- spring boot redis 대기열 구현
- JDK Dynamic Proxy와 CGLIB의 차이
- spring boot poi excel download
- space based architecture
- java userThread와 DaemonThread
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함