Maison >Java >javaDidacticiel >Pourquoi le pool de constantes entières de Java se comporte-t-il différemment au-dessus de 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
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
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
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!