Maison > Java > javaDidacticiel > 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 ?

Mary-Kate Olsen
Libérer: 2024-11-10 13:45:03
original
614 Les gens l'ont consulté

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

Question :Divergence dans le comportement du pool constant d'entiers 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 référençant la même constante.

Integer i1 = 127;
Integer i2 = 127;
System.out.println(i1 == i2); // True
Copier après la connexion

En effet, ces valeurs sont mis en cache dans le pool constant.

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
Copier après la connexion

Cela est dû à une optimisation de la mise en œuvre. 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, utiliser new Integer() peut contourner le pool constant et créer de nouvelles références.

Integer i1 = new Integer(127);
Integer i2 = new Integer(127);
System.out.println(i1 == i2); // False
Copier après la connexion

Conclusion :

Le comportement du pool constant Integer à 127 découle des optimisations de mise en œuvre 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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal