오토박싱 (autoboxing)과 언박싱 (Unboxing) 이란
Autoboxing과정
Integer형 변수에 int형 데이터가 들어올 경우
-> 자동으로 int형 데이터를 Integer형으로 변환
Unboxing과정
int형 변수에 Integer형 데이터가 들어올 경우
-> 자동으로 Integer형 데이터를 int형으로 변환
*객체형에서는 null이 될수 있지만, 기본형에서는 null이 있을수 없다는것을 명심할것
키워드
primitive data type
wrapper class
reference data type
과정
자바에서는(거의 모든 프로그래밍 언어에서는) 맞는 데이터타입을 똑같은 데이터타입 변수에 넣어야 합니다. String형 변수에 int형 데이터를 넣을수 없습니다. 형변환을 하지 않는다면 말이죠.
엄밀하게 따져서, Integer타입과 int타입은 서로 비슷해보이지만. 실제로는 전혀 다릅니다.
Integer은 object객체형 이라서 참조형 데이터 타입reference data type 이고.
int는 primitive기본형 이여서 기본형 데이터 타입primitive data type입니다.
원래대로라면 Integer input2 = 123;는 객체형 변수에 기본형 데이터를 넣겠다는 뜻이므로, 에러가 나야 정상입니다.
실제 자바 5 이하 버전에서는 에러가 났었습니다.
하지만. 그후 wrapper class라는 개념이 생겨났습니다. 쉽게말해 자바에서 Integer과 int의 관계를 컴파일러에게 미리 알려준것이죠.
Integer형 변수에 int형 데이터가 들어올 경우 -> 자동으로 int형 데이터를 Integer형으로 변환 <- autoboxing과정
int형 변수에 Integer형 데이터가 들어올 경우 -> 자동으로 Integer형 데이터를 int형으로 변환 <- unboxing과정
예제
Integer input1 = new Integer(123);
-> Integer 객체인 123을 Integer타입인 input1에 넣겠습니다.
Integer input2 = 123;
-> 읭? 123은 int형인데? 아. int형 데이터 타입은 Integer의 wrapper class니까 autoboxing을 해서 자동으로 Integer 객체로 변환후 Integer타입인 input2에 넣겠습니다.
int input3 = input1;
-> input1은 integer타입이지만.. int형 데이터 타입은 Integer의 wrapper class니까 unboxing을 해서 자동으로 int형으로 변환후 int형인 input1에 넣겠습니다.
'old > Programming' 카테고리의 다른 글
홍미노트Redmi note 4에 안드로이드 오레오(Pixel Experience)8.1.0 인스톨 하는 법 (1) | 2018.06.07 |
---|---|
windows 10에서 자바설치 몇 환경 변수 설정 (1) | 2017.08.21 |
[java]String to int, int to String 형변환 casting variables (0) | 2017.08.18 |
홍미노트Redmi note 4에 리니지OS (Lineage OS) 인스톨 하는 법 (2) | 2017.08.01 |
[자바]ArraylIst에서 중복 제거하는 7가지 방법 (0) | 2017.03.26 |