Maison > Java > javaDidacticiel > Pourquoi \'==\' échoue-t-il lors de la comparaison de chaînes en Java ?

Pourquoi \'==\' échoue-t-il lors de la comparaison de chaînes en Java ?

Linda Hamilton
Libérer: 2024-11-30 04:40:14
original
111 Les gens l'ont consulté

Why Does

Piège de la comparaison de chaînes avec == en Java

En Java, lorsqu'il s'agit de chaînes, les comparer à l'aide de l'opérateur d'égalité (==) peut conduire à des résultats inattendus. Même si deux chaînes semblent identiques, la comparaison peut donner faux. Comprendre la raison de ce comportement est crucial pour éviter les erreurs.

Le nœud du problème réside dans l'architecture orientée objet de Java. Les chaînes en Java sont stockées sous forme d'objets en mémoire et l'opérateur d'égalité (==) compare les références à ces objets plutôt que leur contenu. Par conséquent, même si les valeurs réelles de la chaîne sont les mêmes, les adresses de référence peuvent être différentes, ce qui entraîne une fausse comparaison.

Pour comparer avec précision les valeurs de la chaîne, il faut utiliser la méthode equals() fournie par String classe. Cette méthode compare directement le contenu de la chaîne, garantissant la détection d'une véritable égalité. Il est important de noter que la méthode equals() doit être remplacée dans les classes personnalisées où une comparaison basée sur les valeurs est souhaitée.

Exemple :

Considérez l'extrait de code suivant :

String[] parts = {"231", "CA-California", "Sacramento-155328", "aleee", "Customer Service Clerk", "Alegra Keith.doc.txt"};

if ("231" == parts[0]) {
  // Comparison using ==
  System.out.println("False! Why?");
}

if ("231".equals(parts[0])) {
  // Comparison using equals()
  System.out.println("True");
}
Copier après la connexion

La première comparaison utilisant == renvoie false lorsqu'elle compare les références d'objet, tandis que la deuxième comparaison utilisant equals() renvoie correctement true lors de l'évaluation de la chaîne. valeurs. Il est essentiel d'utiliser equals() pour les comparaisons basées sur des valeurs afin d'éviter des résultats incorrects et de garantir des résultats logiques précis.

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