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!