ist gleich () und operator "==" in Java

8

Ich weiß, dass equals() den Wert von Objekten vergleicht, der '==' Operator wird prüfen, ob die Variable auf denselben Speicher verweist.

Ich verstehe nicht, wie equals() den Wert von Objekten vergleicht, zum Beispiel:

%Vor%

Also, wenn ich equals() verwende, wird es jede Eigenschaft in jedem Objekt vergleichen?

Und was ist, wenn wir über String sprechen? using equals () und operator "==", müssen wir noch die equals () überschreiben?

    
the_drow 01.05.2011, 12:35
quelle

3 Antworten

20

Nein, wenn Sie die equals -Methode in Ihrer Klasse nicht überschreiben, ist equals identisch mit == . Weitere Informationen finden Sie in der Dokumentation dafür:

  

Die equals-Methode für die Klasse Object   implementiert die diskriminierendsten   mögliche Äquivalenzbeziehung auf   Objekte; das heißt für alle nicht null   Referenzwerte x und y, diese Methode   gibt true genau dann zurück, wenn x und y   auf dasselbe Objekt verweisen (x == y hat   der Wert ist wahr).

In der Dokumentation wird auch angegeben, welche Anforderungen für equals -Methoden gelten, falls Sie sie implementieren möchten.

    
theomega 01.05.2011, 12:36
quelle
11
___ qstnhdr ___ ist gleich () und operator "==" in Java ___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123equals ___ Bezieht sich auf die Java equals-Methode, die angibt, ob ein Objekt diesem Wert "gleich" ist. ___ answer5848376 ___

Nein, wenn Sie die == -Methode in Ihrer Klasse nicht überschreiben, ist equals identisch mit hashCode . Weitere Informationen finden Sie in der Dokumentation dafür:

  

Die equals-Methode für die Klasse Object   implementiert die diskriminierendsten   mögliche Äquivalenzbeziehung auf   Objekte; das heißt für alle nicht null   Referenzwerte x und y, diese Methode   gibt true genau dann zurück, wenn x und y   auf dasselbe Objekt verweisen (x == y hat   der Wert ist wahr).

In der Dokumentation wird auch angegeben, welche Anforderungen für %code% -Methoden gelten, falls Sie sie implementieren möchten.

    
___ qstntxt ___

Ich weiß, dass %code% den Wert von Objekten vergleicht, der '==' Operator wird prüfen, ob die Variable auf denselben Speicher verweist.

Ich verstehe nicht, wie %code% den Wert von Objekten vergleicht, zum Beispiel:

%Vor%

Also, wenn ich %code% verwende, wird es jede Eigenschaft in jedem Objekt vergleichen?

Und was ist, wenn wir über String sprechen? using equals () und operator "==", müssen wir noch die equals () überschreiben?

    
___ answer5848561 ___

Die Methode equals ist in der Klasse Object definiert, und da alle Objekte in Java implizit oder explizit von dieser Klasse erben, erben sie auch die Methode equals (), wie sie von Object implementiert wird. Die Standardimplementierung in Object gibt einfach true zurück, wenn die Objekte die Bedingung "==" bestehen.

Sie können jedoch die Methode equals () in Ihrer eigenen Klasse überschreiben und die Kriterien angeben, die überprüft werden müssen, um festzustellen, ob zwei Objekte sinnvoll gleichwertig sind. Sie könnten beispielsweise sagen, dass zwei Instanzen nur dann gleich sind, wenn jedes ihrer Attribute die gleichen Werte wie ein anderes Objekt enthält, oder Sie stattdessen einfach einige Attribute überprüfen möchten, die den Geschäftsschlüssel des Objekts bilden, und die anderen ignorieren.

Die Gleichheit der String-Klassen folgt denselben Regeln wie jede andere Klasse in Java. "==" wird wahr, wenn sie sich auf die gleiche Instanz beziehen, und equals () ist wahr, wenn sie die gleichen Werte enthalten.

    
___
duffymo 01.05.2011 12:36
quelle
0

Die Methode equals ist in der Klasse Object definiert, und da alle Objekte in Java implizit oder explizit von dieser Klasse erben, erben sie auch die Methode equals (), wie sie von Object implementiert wird. Die Standardimplementierung in Object gibt einfach true zurück, wenn die Objekte die Bedingung "==" bestehen.

Sie können jedoch die Methode equals () in Ihrer eigenen Klasse überschreiben und die Kriterien angeben, die überprüft werden müssen, um festzustellen, ob zwei Objekte sinnvoll gleichwertig sind. Sie könnten beispielsweise sagen, dass zwei Instanzen nur dann gleich sind, wenn jedes ihrer Attribute die gleichen Werte wie ein anderes Objekt enthält, oder Sie stattdessen einfach einige Attribute überprüfen möchten, die den Geschäftsschlüssel des Objekts bilden, und die anderen ignorieren.

Die Gleichheit der String-Klassen folgt denselben Regeln wie jede andere Klasse in Java. "==" wird wahr, wenn sie sich auf die gleiche Instanz beziehen, und equals () ist wahr, wenn sie die gleichen Werte enthalten.

    
Navin Peiris 01.05.2011 13:11
quelle

Tags und Links