Heim  >  Artikel  >  Java  >  Zusammenfassung der Wissenspunkte der Objektklasse in Java

Zusammenfassung der Wissenspunkte der Objektklasse in Java

WBOY
WBOYnach vorne
2022-06-16 11:57:431408Durchsuche

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.

Zusammenfassung der Wissenspunkte der Objektklasse in Java

Empfohlenes Lernen: „Java-Video-Tutorial

1 Was ist die Object-Klasse?

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()

2 kurz vorgestellt Klasse

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 werden

Wenn 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,


Lassen Sie uns den HashCode neu schreiben,

    @Override
    public int hashCode() {
        return Objects.hash(dz);
    }

Dann führen Sie den Code aus und probieren Sie es aus genug, nach dem Umschreiben ist die Speicheradresse dieselbe

Also, hashCode Es wird verwendet, um die Position zu lokalisieren

4 Der Compiler generiert automatisch Gleichheit und HashCode

Im 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen