El uso de un int
y un Integer
"indistintamente" se llama autoboxing. Esta característica se introdujo en Java 5. Antes de eso, su código de ejemplo no se habría compilado.En su lugar, usted tendría que escribir algo como esto:
Integer b = Integer.valueOf(42); // or new Integer(42);
int a = b.intValue();
o
int d = 12;
Integer c = Integer.valueOf(d); // or new Integer(d);
que es bastante detallado, por lo que se introdujo autoboxing. Es un poco de magia compilador para hacer la vida más fácil para el codificador.
Técnicamente, int
y Integer
no son intercambiables y no se puede usar uno donde se requiere el otro. Sin embargo, el autoboxing permite la conversión implícita entre los dos.
Como nota al margen, hay un caso en el que falla el autoboxing (específicamente unboxing). Si el código intenta autounbox un valor nulo, se obtiene un NullPointerException
en tiempo de ejecución, por ejemplo .:
Integer b = null;
int a = b; // NullPointerException here!
Sólo es algo a tener en cuenta ...