Maison > Java > javaDidacticiel > Comparaison d'entiers Java : quand `==` fonctionne-t-il et quand devez-vous utiliser `equals()` ?

Comparaison d'entiers Java : quand `==` fonctionne-t-il et quand devez-vous utiliser `equals()` ?

Patricia Arquette
Libérer: 2024-12-25 22:49:16
original
889 Les gens l'ont consulté

Java Integer Comparison: When Does `==` Work, and When Should You Use `equals()`?

Égalité de référence entière vs égalité de valeur

En Java, les primitives comme int et les wrappers d'objet comme Integer ne sont pas interchangeables. La question pose un problème où les objets Integer avec des valeurs int égales sont comparés de manière incorrecte à l'aide de ==, ce qui entraîne de vrais résultats inattendus.

La réponse réside dans la mise en cache des valeurs Integer par la JVM. Pour des raisons de performances, la JVM réutilise les objets pré-alloués dans une plage spécifique (-128 à 127). Lors de la comparaison d'objets Integer à l'aide de ==, la JVM vérifie l'égalité des références et non l'égalité des valeurs. Pour les valeurs situées dans cette plage mise en cache, l'égalité des références implique l'égalité des valeurs.

Cependant, dans l'exemple de code fourni, les valeurs entières sont en dehors de cette plage mise en cache, donc l'égalité des références ne garantit pas l'égalité des valeurs. Au lieu de cela, equals() doit être utilisé pour comparer les valeurs entières pour l'égalité.

Le lien stackoverflow référencé dans la réponse à la question fournit des informations supplémentaires sur les complexités de l'autoboxing et pourquoi le compilateur ne peut pas toujours « le faire fonctionner ».

En résumé, bien qu'il soit pratique d'utiliser == pour les primitives, il est crucial de comprendre les limites de l'égalité des références lorsqu'il s'agit de wrappers d'objets comme Integer. Pour les comparaisons d'égalité de valeurs, equals() doit être utilisé à la place.

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