Maison >Java >javaDidacticiel >Quelle est la différence entre `==` et `Equals()` pour la comparaison d'objets ?

Quelle est la différence entre `==` et `Equals()` pour la comparaison d'objets ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-26 02:14:11263parcourir

What's the Difference Between `==` and `Equals()` for Object Comparison?

Comprendre les différences entre == et Equals/equals

Lors de la comparaison d'objets dans des langages de programmation, il est crucial de faire la différence entre l'égalité de référence et l'égalité de valeur. Cette distinction se produit entre les opérateurs == et Equals/equals.

Égalité de référence avec ==

L'opérateur == en Java et C# (sauf s'il est remplacé) effectue égalité de référence. Il évalue si deux objets partagent le même emplacement mémoire. Cela signifie que == retournera vrai si les objets sont de la même instance et faux s'il s'agit d'instances différentes.

Valeur l'égalité avec Equals/equals

En revanche, la méthode Equals/equals compare les valeurs de deux objets. L'implémentation par défaut dans la classe Object vérifie l'égalité des références, mais elle peut être remplacée par des classes dérivées pour implémenter l'égalité des valeurs. Cela signifie que Equals/equals peut renvoyer vrai même si les objets sont des instances différentes mais ont des valeurs égales.

Différences clés

Feature Reference Equality (==) Value Equality (Equals/equals)
Comparison Memory location Value
Overloading Not supported Supported in C# for some types
Null values Throws an exception if one object is null Treats null as an unequal value
Object class implementation Identity comparison Identity comparison
Potential for overrides No Yes

Exemple

Considérez le code Java suivant :

String str1 = "Hello";
String str2 = new String("Hello");

System.out.println(str1 == str2); // false (reference equality)
System.out.println(str1.equals(str2)); // true (value equality)

Dans cet exemple, == renvoie false car str1 et str2 sont des instances différentes, même si elles ont la même valeur. Cependant, Equals renvoie vrai car il compare les valeurs.

Conclusion

Comprendre la différence entre l'égalité de référence (==) et l'égalité de valeur (Equals/equals) est essentiel pour comparaisons d'objets précises en Java et C#. En exploitant ces opérateurs de manière appropriée, vous pouvez garantir le comportement correct et éviter des résultats inattendus dans votre code.

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!

Déclaration:
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