오토박싱(불변) - 1

"안녕, 아미고!"

" 오늘은 오토박싱 대해 말씀드리겠습니다 .

"Java에는 기본 유형뿐만 아니라 Object 클래스를 상속하는 유형이 있다는 것을 기억할 것입니다. 그러나 컬렉션 및 제네릭과 같은 편리한 기능은 Object를 상속하는 유형에서만 작동합니다."

"그런 다음 모든 기본 유형의 기본이 아닌 상대를 만들기로 결정했습니다."

원시 유형 기본이 아닌 상대
바이트 바이트
짧은 짧은
정수 정수
뜨다 뜨다
더블 더블
부울 부울
성격
무효의 무효의

"하지만 항상 이러한 유형 간에 변환하는 것은 매우 불편합니다."

int x = 3;
Integer y = new Integer(x + 1);
int z = y.intValue();

"특히 컬렉션으로 직접 작업할 때:"

int[] numbers = new int[10];
ArrayList list = new ArrayList();
for (int i = 0; i < numbers.length; i++)
{
 list.add( new Integer(i));
}

"그래서 Java 제작자가 원시 유형의 «오토박싱»을 발명하고 비원시 유형에 대한 '언박싱'을 발명했습니다."

"작동 방식은 다음과 같습니다.

당신이 보는 것 실제로 일어나는 일
int x = 3;
Integer y = x + 1;
int x = 3;
Integer y = Integer.valueOf(x + 1);
int z = y;
int z = y.intValue();
Boolean b = Boolean.FALSE;
boolean a = b;
Boolean b = Boolean.FALSE;
boolean a = b.booleanValue();
Integer x = null;
int y = x;
Integer x = null; int y = x.intValue(); //Throws an exception

"모두 간단합니다. int 및 Integer 유형을 서로 할당할 수 있으며 컴파일러가 다른 모든 것을 처리합니다."

"매우 편리합니다."

"네. 하지만 뉘앙스가 있으니 나중에 얘기하겠습니다."