"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi le pool de constantes entières de Java se comporte-t-il différemment au-dessus de 127 ?

Pourquoi le pool de constantes entières de Java se comporte-t-il différemment au-dessus de 127 ?

Publié le 2024-12-22
Parcourir:987

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

Question : Divergence dans le comportement du pool de constantes entières de Java à 127

Introduction :

Le Le pool de constantes entières est un mécanisme en Java qui optimise la mise en cache des valeurs entières communes pour améliorer les performances. Cependant, le comportement de ce pool présente un changement à 127, provoquant une confusion parmi les développeurs.

Comprendre le comportement :

Pour les entiers allant de -128 à 127 , Java garantit des références identiques pour les variables faisant référence à la même constante.

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

C'est parce que ces valeurs sont mises en cache dans le pool de constantes.

Divergence à 128 :

Cependant, lorsque la valeur entière dépasse 127, le comportement change.

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

Cela est dû à une optimisation de l'implémentation. Bien que JLS garantisse la mise en cache des valeurs jusqu'à 127, au-delà de cette plage, les implémentations peuvent choisir de mettre les valeurs en cache différemment, voire pas du tout.

Considérations supplémentaires :

Même dans la plage garantie (-128 à 127), le comportement de mise en cache n'est pas toujours fiable. Par exemple, l'utilisation de new Integer() peut contourner le pool de constantes et créer de nouvelles références.

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

Conclusion :

Le comportement du pool de constantes Integer à 127 provient des optimisations d'implémentation et de la plage garantie définie par le JLS. Les développeurs doivent être conscients de ce changement de comportement pour éviter des résultats inattendus.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3