Heim >Java >javaLernprogramm >Was ist der Unterschied zwischen „==' und „Equals()' für den Objektvergleich?

Was ist der Unterschied zwischen „==' und „Equals()' für den Objektvergleich?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-26 02:14:11313Durchsuche

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

Die Unterschiede zwischen == und Equals/equals verstehen

Beim Vergleich von Objekten in Programmiersprachen ist es wichtig, zwischen Referenzgleichheit und Wertgleichheit zu unterscheiden. Diese Unterscheidung ergibt sich zwischen den ==- und Equals/equals-Operatoren.

Referenzgleichheit mit ==

Der ==-Operator in Java und C# (sofern er nicht überschrieben wird) funktioniert Bezugsgleichheit. Dabei wird ausgewertet, ob zwei Objekte denselben Speicherort teilen. Das bedeutet, dass == „true“ zurückgibt, wenn die Objekte dieselbe Instanz sind, und „false“, wenn es sich um unterschiedliche Instanzen handelt.

Wertgleichheit mit Gleich/gleich

Im Gegensatz dazu Die Methode „Equals/equals“ vergleicht die Werte zweier Objekte. Die Standardimplementierung in der Object-Klasse prüft die Referenzgleichheit, kann jedoch von abgeleiteten Klassen überschrieben werden, um Wertegleichheit zu implementieren. Dies bedeutet, dass Equals/equals true zurückgeben kann, auch wenn die Objekte unterschiedliche Instanzen sind, aber gleiche Werte haben.

Hauptunterschiede

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

Beispiel

Betrachten Sie den folgenden Java-Code:

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)

In In diesem Beispiel gibt == false zurück, da str1 und str2 unterschiedliche Instanzen sind, obwohl sie denselben Wert haben. Allerdings gibt Equals true zurück, weil es Werte vergleicht.

Fazit

Es ist wichtig, den Unterschied zwischen Referenzgleichheit (==) und Wertgleichheit (Equals/equals) zu verstehen genaue Objektvergleiche in Java und C#. Durch die entsprechende Nutzung dieser Operatoren können Sie das korrekte Verhalten sicherstellen und unerwartete Ergebnisse in Ihrem Code vermeiden.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „==' und „Equals()' für den Objektvergleich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn