Java8 혹은 또 프로그래밍을 하다보니 Autoboxing/unboxing에 대해 자주 접하게 된다.
그리고 그 개념은 소홀해었는데 알고보니 중요하더라하는 이야기를 하고싶었다.
그래서 블로그에 정리하게 되었다.
AutoBoxing 이란?
JDK 1.5부터 지원하게 되는 건데, 이를테면 쉽게 설명하자면, Data type에 관한 야이기이다.
int primitive = 123;을 하게 되면, 기본 타입 Primitive라고 합니다.
이건 알고 있죠 ?
그럼 이건요 ?
Integer integer = 123;
Integer integer1 = new Integer(444);
위는 사실상 정말 다른 내용입니다. Integer class는 Wrapper class라고도 하는데 Primitivie에 대한 객체타입으로
우리가 프로그래밍 하는 중간마다 객체형으로 처리를 해야할 때 쓰입니다.
사실 위 코드에서 AutoBoxing을 일어났습니다.
바로
Integer integer = 123;여기에서 일어났습니다. 123은 기본 데이터 타입인데 , 지금 참조타입에 대입을 해주죠.
사실 컴파일러단에서 아 ~ 기본 정수형 타입! 그래 너는 Integer Wrapper class니까 자동으로 new Integer(123)으로 바꿔주자.
이렇게 됩니다. 결국 컴파일러측에서 눈치채고 Primitive type 데이터를 Wrapper class에 자동으로 Boxing을 해준다는 의미입니다.
Unboxing 이란?
Autoboxing의 반대로 볼 수 있습니다. 기본 타입을 Wrapper 포장하는 것이 Autoboxing이라면,
포장 된 wrapper에서 primitive type으로 꺼내는 것을 Unboxing이라고 합니다.
int primitive = integer;
System.out.println(primitive);
위의 코드는 정상적으로 잘 동작합니다. 원래는 integer.intValue()로 값을 받아야 하지만, 알아서 아!
Integer class에 저장된 값을 알아서 Unboxing 후 primitivie 변수에 넣어줍니다.
|
'프로그래밍 > Java' 카테고리의 다른 글
Singleton Pattern for Java (0) | 2015.09.21 |
---|---|
생성자 인자가 많을때 어떤 패턴을 써야 하나? (0) | 2015.09.21 |
객체의 직렬화! Serialization 이야기 (0) | 2015.09.19 |
Stream 관련 - 예전 방식 vs Stream (0) | 2015.09.18 |
Java - EnumMap에 대한 간단한 사용 (0) | 2015.09.15 |