Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

¿Los Integer no tienen un Id de Referencia?

Estuve jugando con los wrappers para ver que curiosidades pueden tener, y me pregunte si por referencias son los Integer o se comportaran como un int asi que hice este código.

Integer num1 = Integer.valueOf(10);
Integer num2 = Integer.valueOf(10);

System.out.println(num1 == num2); 

Y resulta que lo que imprimió el println fue un true lo cual es imposible pasa clases con los mismos parámetros pero distinta instancia, por las referencias. y mi pregunta es, ¿Por qué sucede esto si se supone que son clases, y las clases juegan con sus referencias?

2 respuestas
solución!

¡Hola Diego!

En Java, los objetos Integer son una excepción a la regla de que los objetos siempre tienen un id de referencia único. La razón por la que el resultado de tu código es "true" es porque los objetos Integer que creaste con el método "valueOf" son objetos inmutables y se almacenan en un caché interno.

Cuando creas dos objetos Integer con el mismo valor, como en tu ejemplo, ambos objetos se almacenan en el mismo lugar de la memoria caché interna. Por lo tanto, ambos objetos tienen la misma referencia de objeto, lo que hace que la comparación con el operador "==" sea verdadera.

Espero haber aclarado tu duda. ¡Buenos estudios!

Gracias por su respuesta.