Wrapper(포장) 객체 : 기본 타입의 데이터를 포장하기 때문에 붙여진 이름이다.
래퍼 클래스가 사용되는 이유는 기본데이터 타입이 아닌 Object가 필요한 경우가 있기 때문이다.
기본 타입이 아닌 Object가 필요한 경우.
1. Generic에서 타입 파라미터로 참조타입(Reference Type)만 정할 수 있다.
int, short, double 등 기본 타입(primitive type)은 올 수 없다.
→ 이와 같은 맥락으로 Collection 프레임 워크는 제네릭을 사용하기 때문에 객체 형태의 데이터만 파라미터로 올 수 있다.
그래서 우리가 ArrayList<Integer>, ArrayList<Double>과 같이 사용하는 것이다.
2. 기본 자료형의 값을 문자열로 변환하는 경우, 혹은 반대의 경우
Double d = 10.0;
String s;
s = d.toString(); // 10.0 -> "10.0"이라는 문자열로 반환
double dd =Double.parseDouble(s) // 문자열을 double로 바꿔줌.
위에서 Double이 Wrapper 클래스이다.
Java에서 기본 타입래퍼 클래스
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
* String은 기본 타입이 아니었구나..ㄷ..ㄷ 그래서 equals로 동일함을 비교해야하구나..깨달음 ㅋㅋ
특징
기본 자료형을 감싼다.
String과 같이 불변성을 지닌다. wrapper 클래스 내의 객체 값은 변경이 불가능하다.
부록 : 오토 박싱, 오토 언박싱
Wrap이 포장한다는 의미이다. 박싱과 같은 맥락!
오토 박싱은 자동으로 포장해주는 것.
오토 언박싱은 자동으로 포장을 풀어주는 것이다.
예를 들어 보자.
Integer i = 1; // 1이라는 기본형 정수타입이 Integer라는 Wrapper로 자동으로 포장
int a=i; // Integer라는 Wrapper에서 자동으로 기본형 정수타입으로 포장이 풀어짐.
첫번째 것을 오토 박싱
두번째 것을 오토 언박싱이라고 합니다.
참 쉽죠?
또 다른 경우 case : Collection에서의 예시를 보도록 하죠
ArrayList<Integer> list = new ArrayList<>();
list.add(10);//이 과정에서 10-> Integer(10)이 되어 wrapper 클래스로 저장. 오토 박싱
list.add(9); // 마찬가지
int i = list.get(0); // list.get(0)-> Integer(10)을 리턴 -> 자동으로 기본형 타입으로 바뀐다. : 오토 언박싱
다른 타입에 대해서는 아래 표를 참조하시면 되겠습니다.
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
감사합니다.
잘못된 내용은 댓글로 말씀 부탁드리겠습니다.
'Java' 카테고리의 다른 글
[Java] 스트림 - Stream : 효율적인 데이터 다루기! (0) | 2022.09.18 |
---|---|
[Java] Optional<T>, Optional 타입 : 래퍼 클래스, 코드의 복잡성을 낮추다. (0) | 2022.09.04 |
[Java] 람다식 - Lambda Expression (0) | 2022.08.29 |
[Java] BigDecimal - Java에서 정밀한 숫자 표현하기 (0) | 2022.08.24 |
[Java] 문자열 split 할 때 마침표(.) : split(".") → split("//.") (0) | 2022.08.02 |
댓글