Integer a = 127;
Integer b = 127;
Integer c = 128;
Integer d = 128;
System.out.println((a == b) + "," + (c == d)); 📥 Inputs:
a=127, b=127, c=128, d=128
❓ ¿Cuál es el output?
Ingresa tu respuesta abajo
💡 Explicación
¡Sorpresa! Java cachea objetos Integer entre -128 y 127 por optimización. Por eso a == b es true (mismo objeto en cache), pero c == d es false (objetos diferentes). Fuera de este rango, cada Integer.valueOf() crea una nueva instancia. Siempre usa .equals() para comparar objetos, no ==. Este es uno de los gotchas más traicioneros de Java con autoboxing.
¿Qué imprime? 🤯