"Zamiennie" oznacza "autoboxing". Ta funkcja została wprowadzona w języku Java 5. Wcześniej Twój przykładowy kod nie zostałby skompilowany.Zamiast tego, trzeba by napisać coś takiego:
Integer b = Integer.valueOf(42); // or new Integer(42);
int a = b.intValue();
lub
int d = 12;
Integer c = Integer.valueOf(d); // or new Integer(d);
To dość rozwlekły, dlatego autoboxing został wprowadzony. To trochę magii kompilatora, aby ułatwić życie koderowi.
Same z siebie nie są wymienne i nie można ich używać tam, gdzie jest to wymagane. Jednak autoboxing umożliwia niejawną konwersję między tymi dwoma.
Na marginesie, istnieje jeden przypadek, w którym autoboxing (w szczególności unboxing) nie powiedzie się. Jeśli kod usiłuje autounbox wartość null, dostaniesz NullPointerException
w czasie wykonywania, np .:
Integer b = null;
int a = b; // NullPointerException here!
tylko coś być świadomi ...