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:
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?
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.
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.
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?
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.
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.