Maison > Java > javaDidacticiel > Pourquoi l'égalité « entier » renvoie-t-elle parfois « false » en Java ?

Pourquoi l'égalité « entier » renvoie-t-elle parfois « false » en Java ?

Mary-Kate Olsen
Libérer: 2024-11-30 03:08:13
original
335 Les gens l'ont consulté

Why Does `Integer` Equality Sometimes Return `false` in Java?

Mise en cache des entiers en Java : comprendre l'optimisation

Des observations récentes ont semé la confusion concernant le comportement des objets Integer en Java. Un exemple de code démontre que l'opérateur d'égalité renvoie « faux » pour deux instances d'entier égales à 1 000 mais « vrai » pour deux instances égales à 100.

Ce paradoxe apparent découle du mécanisme de mise en cache de Java pour les entiers. Pour optimiser les performances et réduire l'empreinte mémoire, la machine virtuelle Java (JVM) met en cache les objets Integer pour les valeurs comprises entre -128 et 127. Cela signifie que les références aux instances Integer dans cette plage sont toujours les mêmes.

Par conséquent, dans le deuxième extrait de code, où les instances Integer représentent la valeur 100, "c" et "d" pointent tous deux vers le même objet mis en cache, ce qui donne "true" lors de la comparaison de leur égalité. Cependant, pour les valeurs en dehors de cette plage, telles que 1 000, différents objets Integer sont créés, d'où le « faux » résultat de comparaison.

Cette optimisation affecte les performances en réduisant l'utilisation de la mémoire, conduisant à une utilisation plus efficace du cache. Il élimine également la surcharge liée à la création de nouveaux objets pour les entiers fréquemment utilisés, ce qui accélère l'exécution du code.

Des recherches plus approfondies sur ce sujet peuvent être trouvées dans les ressources suivantes :

  • [Java d'Oracle Optimisation des performances Lignes directrices](https://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-tuning-6.html#integer_caching)
  • [Optimisation de l'arithmétique entière en Java et C ](https://coincidental.com/research/number-boxes.pdf)

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