1. Die Rolle von Gleichheit und die Differenz von ==
Gleichheit wird verwendet, um zu bestimmen, ob zwei Objekte gleich sind.
equals wird normalerweise verwendet, um zu vergleichen, ob der Inhalt zweier Objekte gleich ist, und == wird verwendet, um zu vergleichen, ob die Adressen zweier Objekte gleich sind.
Die Methode equal entspricht standardmäßig „==".
Die Methode equal in der Object-Klasse wird definiert, um zu bestimmen, ob die Adressen zweier Objekte gleich sind (was so verstanden werden kann, dass es sich um dasselbe Objekt handelt. Wenn die Adressen gleich sind, werden die Objekte als gleich betrachtet). . Dies bedeutet, dass die Beurteilung, ob zwei Objekte gleich sind, gleichbedeutend ist mit „==“, d. h. ob die Adressen der beiden Objekte gleich sind, wenn nicht alle von uns erstellten neuen Klassen die Methode „equals“ überschreiben.
Die Methode equal in der Object-Klasse wird wie folgt implementiert:
public boolean equals(Object obj) { return (this == obj); }
Aber in unserer tatsächlichen Entwicklung wird normalerweise davon ausgegangen, dass die beiden Objekte gleich sind, wenn der Inhalt zweier Objekte gleich ist equal und equal gibt true zurück. Wenn die Objektinhalte unterschiedlich sind, wird false zurückgegeben.
Es kann also in zwei Situationen zusammengefasst werden
1. Wenn die Klasse die Equals-Methode nicht überschreibt, entspricht die Verwendung der Equals-Methode zum Vergleichen zweier Objekte einem ==-Vergleich Das heißt, zwei Objekte Die Adressen sind gleich. Wenn die Adressen gleich sind, geben Sie „true“ zurück; wenn die Adressen nicht gleich sind, geben Sie „false“ zurück.
2. Die Klasse überschreibt die Gleichheitsmethode. Beim Vergleich zweier Objekte wird die Beurteilungsmethode nach dem Überschreiben verwendet. Normalerweise schreiben wir „equals“ wie folgt um: Wenn die Inhalte der beiden Objekte gleich sind, gibt „equals“ „true“ zurück, und wenn die Inhalte unterschiedlich sind, gibt es „false“ zurück.
Zum Beispiel:
public class EqualTest { public static void main(String[] args) { Person p1 = new Person(10,"张三"); Person p2 = new Person(10,"张三"); System.out.println(p1.equals(p2)); } } class Person{ int age; String name; public Person(int age, String name) { super(); this.age = age; this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
Person überschreibt nicht die Methode „equals“, dann wird standardmäßig „equals“ im Objekt verwendet, bei dem es sich um die Speicheradressenbeurteilung der beiden Objekte (p1 und) handelt p2). p1 und p2 haben offensichtlich unterschiedliche Speicheradressen, daher ist das Ausgabeergebnis offensichtlich falsch.
Was passiert, wenn wir die Methode „equals“ überschreiben? Wir glauben, dass Personen mit demselben Namen und demselben Alter dieselbe Person sind, daher repräsentieren p1 und p2 beide den 10-jährigen Zhang San, und diese beiden Objekte sollten gleich sein. Die überschriebene Equals-Methode lautet wie folgt:
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Person other = (Person) obj; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; }
In ähnlicher Weise ist das Ergebnis wahr, wenn der obige Anwendungsfall ausgeführt wird.
Übrigens: Wenn die Methode „equals“ „true“ zurückgibt, ist == dann auch wahr?
ist nicht unbedingt wahr. Es gibt zwei Möglichkeiten, dass Gleiche „true“ zurückgeben: Eine besteht darin, dass die Adressen der beiden Objekte gleich sind, und die andere darin, dass der Inhalt der beiden Objekte gleich ist. Wenn der Inhalt gleich ist, können die Adressen unterschiedlich sein, sodass das Ergebnis des ==-Vergleichs möglicherweise falsch ist.
Wir fügen die Beurteilung von == wie folgt zur Hauptmethode hinzu:
public static void main(String[] args) { Person p1 = new Person(10,"张三"); Person p2 = new Person(10,"张三"); System.out.println(p1.equals(p2)); System.out.println(p1 == p2); }
Das Ausgabeergebnis ist offensichtlich. Das Ergebnis von p1==p2 ist falsch.
Empfohlenes Tutorial: Java-Einführungs-Tutorial
Das obige ist der detaillierte Inhalt vonSo ermitteln Sie, ob Objekte in Java gleich sind. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft
