¿Qué imprime esto?
Integer a = 127, b = 127;
Integer c = 128, d = 128;
System.out.println((a == b) + " " + (c == d));Opciones
- true true
- true false (Opción correcta)
- false false
- false true
Respuesta
true false
Por qué
Cuando escribes Integer a = 127, Java hace autoboxing: llama a Integer.valueOf(127). Para ahorrar memoria, valueOf mantiene una caché de objetos Integer de -128 a 127 y los reutiliza.
Así que 127 da el mismo objeto las dos veces (== true), pero 128 crea dos objetos distintos (== false).
Lección: nunca compares objetos wrapper con ==; usa .equals().
Recuerda
La caché de Integer cubre -128..127: compara wrappers con equals().