Antworten 1:
  • equals vergleicht nur das, was zum Vergleichen geschrieben wurde, nicht mehr und nicht weniger. Wenn eine Klasse die equals-Methode nicht überschreibt, wird standardmäßig die equals-Methode (Object o) der nächsten übergeordneten Klasse verwendet, die diese Methode überschrieben hat Wenn keine übergeordneten Klassen eine Überschreibung bereitgestellt haben, wird standardmäßig die Methode der letzten übergeordneten Klasse Object verwendet, sodass die Methode Object # equals (Object o) übrig bleibt. Laut Objekt-API ist dies dasselbe wie ==; Das heißt, es wird nur dann true zurückgegeben, wenn beide Variablen auf dasselbe Objekt verweisen, wenn ihre Referenzen ein und dasselbe sind. Daher werden Sie auf Objektgleichheit und nicht auf funktionale Gleichheit testen. Denken Sie immer daran, hashCode zu überschreiben, wenn Sie equals überschreiben, um den Vertrag nicht zu brechen. Gemäß der API muss das Ergebnis, das von der hashCode () -Methode für zwei Objekte zurückgegeben wird, dasselbe sein, wenn die Methode equals anzeigt, dass sie äquivalent sind. Das Gegenteil ist nicht unbedingt der Fall.

Was ist der Unterschied zwischen == und equals () in Java?