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.
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:
== 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!