Heim >Java >javaLernprogramm >Was ist der Unterschied zwischen „==' und „.equals()' beim Vergleichen von Objekten in Java?

Was ist der Unterschied zwischen „==' und „.equals()' beim Vergleichen von Objekten in Java?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-26 11:19:09282Durchsuche

What's the Difference Between `==` and `.equals()` When Comparing Objects in Java?

Vergleichen von Objekten mit dem ==-Operator und der .equals()-Methode

Bei der objektorientierten Programmierung ist der Vergleich von Objekten von entscheidender Bedeutung. In diesem Artikel wird die Verwendung von zwei Vergleichsmethoden untersucht: ==-Operator und .equals().

==-Operator

Der ==-Operator vergleicht Objektreferenzen. Es prüft, ob es sich bei zwei Objekten um genau dieselbe Instanz handelt und nicht nur um äquivalente Objekte mit demselben Inhalt. Im bereitgestellten Beispielcode sind Objekt1 und Objekt2 unterschiedliche Instanzen, daher gibt Objekt1 == Objekt2 „false“ zurück.

.equals()-Methode

Im Gegensatz dazu gibt die Methode .equals ()-Methode wird zum Vergleichen von Objektinhalten verwendet. Normalerweise wird geprüft, ob Objekte dieselben Eigenschaften oder Attribute haben. Im Beispielcode prüft .equals(), ob das a-Feld von Objekt1 dem a-Feld von Objekt2 entspricht. Ihre benutzerdefinierte Equals()-Implementierung ist jedoch falsch, da sie die Objekte selbst und nicht ihre a-Felder vergleicht. Dies führt dazu, dass „false“ zurückgegeben wird, obwohl die a-Felder identisch sind.

Korrekte Implementierung der .equals()-Methode

Um die a-Felder korrekt zu vergleichen, können Sie verwenden die folgende Implementierung:

public boolean equals(Object object2) {
    if (object2 instanceof MyClass) {
        MyClass other = (MyClass) object2;
        return a.equals(other.a);
    }
    return false;
}

Diese Implementierung prüft, ob Objekt2 eine Instanz von MyClass ist und wandelt es dann entsprechend um. Anschließend werden die a-Felder der beiden Objekte verglichen.

Fazit

Der Operator == vergleicht Objektreferenzen, während die Methode .equals() den Objektinhalt vergleicht. Die ordnungsgemäße Verwendung beider Methoden gewährleistet genaue Vergleiche für Ihre spezifischen Anforderungen.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „==' und „.equals()' beim Vergleichen von Objekten in Java?. 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