Java · Avançado · Português · Técnico
cache de Integer
Cache de objetos Integer entre -128 e 127 que o autoboxing reutiliza por padrão. Por isso == entre Integers pequenos dá true, e entre grandes costuma dar false.
Onde usar
Bug clássico de code review: comparar Integer com == funciona nos testes com valores pequenos e falha em produção com valores maiores.
Em código
Integer a = 127, b = 127;
Integer c = 128, d = 128;
System.out.println(a == b); // true
System.out.println(c == d); // false
System.out.println(c.equals(d)); // trueExemplos
O == deu true porque o valor cabe no cache de Integer.
Em produção o id passou de 127 e a comparação com == falhou.
Cuidado
Não dependa disso: compare Integer com equals ou desembrulhe para int.