Maison >Java >javaDidacticiel >Comparaison d'entiers Java : quand devez-vous utiliser == vs.equals() ?
Égalité entière en Java : démêler le dilemme == vs. égal
L'introduction par Java de l'autoboxing dans la version 1.5 a permis un échange pratique des primitives des types comme int et leurs classes wrapper correspondantes telles que Integer. Cependant, une observation récente a soulevé des questions sur la validité de l'utilisation de == pour la comparaison de valeurs entières.
Considérez le code suivant :
Integer cdiCt = ...; Integer cdsCt = ...; ... if (cdiCt != null & cdiCt != cdsCt) mismatch = true;
Étonnamment, ce code définissait parfois une inadéquation à vrai même lorsque les valeurs de cdiCt et cdsCt étaient égales. L'utilisation d'un point d'arrêt dans Eclipse a révélé que les deux valeurs entières étaient égales à 137, mais que l'expression conditionnelle était évaluée à false.
La modification de la condition pour utiliser equals() à la place :
if (cdiCt != null & cdiCt != null & !cdiCt.equals(cdsCt))
a résolu le problème problème. Cela soulève la question : n'est-il toujours pas conseillé d'utiliser == pour comparer deux valeurs entières ?
La réponse réside dans la mise en cache des valeurs entières par la machine virtuelle Java (JVM). Pour améliorer les performances, la JVM met en cache les valeurs entières comprises entre -128 et 127. Cela signifie que lorsque vous comparez deux valeurs entières dans cette plage à l'aide de ==, elles ne seront égales que si elles font référence à la même instance mise en cache.
Cependant, si les valeurs se situent en dehors de cette plage ou ne sont pas automatiquement encadrées, elles seront traitées comme des objets distincts. Cela peut conduire à un comportement inattendu, comme le démontre l'exemple fourni.
Par conséquent, il n'est généralement pas recommandé de s'appuyer sur == pour comparer des valeurs entières, en particulier lorsqu'elles peuvent dépasser la plage mise en cache ou si la précision est critique. . Au lieu de cela, utiliser equals() est l'approche la plus sûre pour garantir des comparaisons d'égalité fiables.
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!