Heim  >  Artikel  >  Java  >  Wie wird der Java-Objektvergleich implementiert?

Wie wird der Java-Objektvergleich implementiert?

WBOY
WBOYOriginal
2024-04-12 10:09:02763Durchsuche

Der Vergleich von Objekten in Java erfolgt über ihre Referenzen. Der ==-Operator vergleicht die Referenzadresse, während die Methode equal() den Objektinhalt vergleicht. Bei primitiven Typen vergleicht „equals()“ Werte, während „equals()“ bei Referenztypen typischerweise einen Vergleich auf Inhaltsgleichheit durchführt, z. B. den Werteigenschaftenvergleich von String. Bei Verwendung von == geben zwei verschiedene Objekte false zurück, auch wenn sie denselben Inhalt haben. Bei Verwendung von equal() wird derselbe Inhalt verschiedener Objekte true zurückgegeben, z. B. beim Vergleich zweier Person-Objekte.

Wie wird der Java-Objektvergleich implementiert?

Vergleich von Java-Objekten: Mechanismus und Praxis

In Java können Objekte anhand ihrer Referenzen verglichen werden. Eine Objektreferenz stellt die Adresse dar, an der ein Objekt im Speicher gespeichert ist. Wenn wir zwei Objektreferenzen vergleichen, vergleichen wir tatsächlich, ob die Objekte, auf die sie verweisen, identisch sind.

== und equal() Methoden

Java bietet zwei Möglichkeiten zum Vergleichen von Objekten:

  • == Operator: Vergleicht Referenzen auf Objekte. Gibt „true“ zurück, wenn die beiden Referenzen auf dasselbe Objekt verweisen, andernfalls „false“.
  • equals()-Methode: Vergleicht den tatsächlichen Inhalt von Objekten. Gibt „true“ zurück, wenn die Werte der beiden Objekte gleich sind; andernfalls wird „false“ zurückgegeben. Implementierung von

== Die Implementierung des

==-Operators ist relativ einfach, er vergleicht direkt die Adressen zweier Referenzen. Zwei Referenzen sind gleich, wenn sie auf dasselbe Objekt verweisen. Die Implementierung von

public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    return false;
}

equals() Die Implementierung der

equals()-Methode muss je nach Objekttyp unterschiedlich sein. Für primitive Typen (z. B. int, double) vergleicht equal() ihre Werte. Bei Referenztypen (z. B. String, ArrayList) vergleicht equal() normalerweise deren Inhalte auf Gleichheit.

Hier ist ein Beispiel für den Vergleich zweier String-Objekte:

public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    if (obj instanceof String) {
        String other = (String) obj;
        return this.value.equals(other.value);
    }
    return false;
}

Praktisches Beispiel

Angenommen, wir haben einen Code, in dem wir zwei Personenobjekte erstellen:

Person p1 = new Person("John", 25);
Person p2 = new Person("John", 25);

Vergleichen Sie diese beiden mit dem Operatorobjekt ==, wird zurückgegeben falsch, da es sich um unterschiedliche Objekte handelt.

System.out.println(p1 == p2); // 输出 false

Beim Vergleich mit der Methode equal() wird jedoch „true“ zurückgegeben, da ihre Inhalte gleich sind.

System.out.println(p1.equals(p2)); // 输出 true

Das obige ist der detaillierte Inhalt vonWie wird der Java-Objektvergleich implementiert?. 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