Un int y un Integer aunque a primera vista son iguales, no lo son. Uno es una primitiva, el otro es un objeto. En ocasiones es necesario que un int sea un objeto (y viceversa), por lo que se convierten automáticamente (
autoboxing).
El caso es muy similar al de las String, si conviertes automáticamente un int a Integer, usará el mismo objeto para el mismo número, si creas tú el Integer, son objetos diferentes.
Prueba variando int y Integer, y lo verás
Código Javascript
:
Ver originalInteger[] in = new Integer[2];
in[0] = 3;
in[1] = new Integer(3);
System.out.println(in[0]==in[1]);
System.out.println(in[0].equals(in[1]));