Repaso
English
Java CoreIntermedioJV-15

¿Qué imprime esto?

Integer a = 127, b = 127;
Integer c = 128, d = 128;
System.out.println((a == b) + " " + (c == d));

Opciones

  1. true true
  2. true false (Opción correcta)
  3. false false
  4. 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().

Términos clave

Practica esta pregunta en Repaso