Dieser Artikel vermittelt Ihnen relevantes Wissen über Java und stellt hauptsächlich verwandte Themen zur Object-Klasse vor, einschließlich der Frage, was die Object-Klasse ist, die Methode equal, die hashCode-Methode in der Object-Klasse usw. Das Folgende ist: Werfen wir einen Blick darauf , hoffe es hilft allen.
Empfohlenes Lernen: „Java-Video-Tutorial“
Object ist eine spezielle Klasse in der Java-Klassenbibliothek und die übergeordnete Klasse aller Klassen.
Mit anderen Worten, Java ermöglicht die Zuweisung jedes Objekttyps zu einer Variablen vom Typ Objekt.
Mit Ausnahme der Object-Klasse haben alle Klassen in Java Vererbungsbeziehungen.
Die Object-Klasse befindet sich im Paket java.lang und wird während der Kompilierung automatisch importiert. Wenn keine geerbte übergeordnete Klasse angegeben ist, ist die Object-Klasse die standardmäßige übergeordnete Klasse.
class Person {} class Student {} public class Test03 { public static void func(Object o) { } public static void main(String[] args) { func(new Person()); func(new Student()); } public static void main1(String[] args) { Object o = new Person(); Object o2 = new Student(); } }
Werfen wir einen Blick auf die Methoden in der Object-Klasse
In diesem Artikel werden hashCode(), equal()
Sehen Sie sich diesen Code unten an
class Person { public String dz; public Person(String dz) { this.dz = dz; } @Override public String toString() { return "Person{" + "dz='" + dz + '\'' + '}'; } } class Student { } public class Test03 { public static void main(String[] args) { Person person = new Person("beijing"); Person person1 = new Person("beijing"); System.out.println(person == person1); }
Wenn Sie direkt auf diese Weise vergleichen, um zu sehen, ob die Adressen gleich sind, wird false ausgegeben und die Ausgabe ist falsch
Wenn Sie also vergleichen möchten, gibt es eine Methode? ?
In Java wird eine Methode bereitgestellt, mit der verglichen werden kann, ob zwei Objekte gleich sind.
System.out.println(person.equals(person1));
Wenn Sie dies direkt in main schreiben, wird trotzdem false ausgegeben Es gibt kein Gleiches in Person und die Standardeinstellung wird von Object geerbt. Ja. Sie können sehen, dass der Vergleich im Inneren immer noch this und obj ist, bei denen es sich um die aktuell übergebenen Parameter handelt, also ist er falsch.
Also, wie man Gleichheit zum Vergleichen verwendet
Dann müssen Sie Gleichheit umschreiben, bevor Sie vergleichen können
@Override public boolean equals(Object obj) { //判断当前obj参数是否为null if (obj == null) { return false; } if (this == obj) { return true; } //不是Person类对象 if (!(obj instanceof Person)) { return false; } Person ret = (Person) obj; return this.dz.equals(ret.dz); }
Wir können Gleichheit mit Hilfe von String umschreiben
Zu diesem Zeitpunkt können Gleichheit verglichen werdenWenn Sie vergleichen, ob der Inhalt von Objekten gleich ist, müssen Sie „equals“ überschreiben.
3. Die HashCode-Methode in der Object-Klasse. Geben Sie die Speicheradresse ein und rufen Sie dann die Methode Integer.toHexString () auf. Geben Sie diese Adresse hexadezimal aus dass die Speicheradresse anders ist
Die Anweisungen sind direkt so, dass HashCode nicht möglich ist, dann müssen Sie einen HashCode neu implementieren,
@Override public int hashCode() { return Objects.hash(dz); }
Also, hashCode Es wird verwendet, um die Position zu lokalisieren
4 Der Compiler generiert automatisch Gleichheit und HashCodeIm Allgemeinen sind diese beiden beim Umschreiben Gleichzeitig neu geschrieben
Dies ist der generierte Gleichheits- und Hash-Code
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return Objects.equals(dz, person.dz); }
Empfohlenes Lernen: „Java-Video-Tutorial
“Das obige ist der detaillierte Inhalt vonZusammenfassung der Wissenspunkte der Objektklasse in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!