"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que o pool de constantes inteiras do Java se comporta de maneira diferente acima de 127?

Por que o pool de constantes inteiras do Java se comporta de maneira diferente acima de 127?

Publicado em 2024-12-22
Navegar:561

Why Does Java's Integer Constant Pool Behave Differently Above 127?

Pergunta: Divergência no comportamento do pool constante inteiro do Java em 127

Introdução:

O O pool de constantes inteiras é um mecanismo em Java que otimiza o armazenamento em cache de valores inteiros comuns para melhorar o desempenho. No entanto, o comportamento deste pool apresenta uma mudança em 127, causando confusão entre os desenvolvedores.

Compreendendo o comportamento:

Para números inteiros variando de -128 a 127 , Java garante referências idênticas para variáveis ​​que fazem referência à mesma constante.

Integer i1 = 127;
Integer i2 = 127;
System.out.println(i1 == i2); // True

Isso ocorre porque esses valores são armazenados em cache no pool constante.

Divergência em 128:

No entanto, quando o valor inteiro excede 127, o comportamento muda.

Integer i1 = 128;
Integer i2 = 128;
System.out.println(i1 == i2); // False

Isso se deve a uma otimização de implementação. Embora o JLS garanta o armazenamento em cache para valores até 127, além desse intervalo, as implementações podem optar por armazenar valores em cache de maneira diferente ou até mesmo não armazenar em cache.

Considerações adicionais:

Mesmo dentro do intervalo garantido (-128 a 127), o comportamento do cache nem sempre é confiável. Por exemplo, usar new Integer() pode ignorar o conjunto de constantes e criar novas referências.

Integer i1 = new Integer(127);
Integer i2 = new Integer(127);
System.out.println(i1 == i2); // False

Conclusão:

O comportamento do pool de constantes inteiras em 127 decorre de otimizações de implementação e do intervalo garantido definido pelo JLS. Os desenvolvedores devem estar cientes dessa mudança de comportamento para evitar resultados inesperados.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3