Heim >Java >javaLernprogramm >So verwenden Sie die Java-Objektklasse

So verwenden Sie die Java-Objektklasse

WBOY
WBOYnach vorne
2023-05-13 17:13:141465Durchsuche

    1.equals-Methode

    == Operator

    Vergleichsoperator, der sowohl Basistypen als auch Referenztypen bestimmen kann

    Wenn Sie den Basistyp bestimmen, bestimmen Sie, ob die Werte gleich sind

    Wenn Sie bestimmen der Referenztyp. Beurteilen Sie dann, ob die Adressen gleich sind, das heißt, ob es sich um dasselbe Objekt handelt.

    public boolean equals(Object obj) {
        return (this == obj);
    }

    Das ist in der Objektklasse deutlich zu erkennen. Die Methode equal dient dazu, festzustellen, ob die Adressen der Objekte gleich sind (ob es sich um dasselbe Objekt handelt).

    Andere Datentypklassen überschreiben jedoch die Methode equal, z als Umschreiben der String-Klasse: (Bestimmen, ob die Werte zweier Strings gleich sind)

    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        return (anObject instanceof String aString)
                && (!COMPACT_STRINGS || this.coder == aString.coder)
                && StringLatin1.equals(value, aString.value);
    }

    Beispiel:

    String str1 = new String("hello");
    String str2 = new String("hello");
    System.out.println(str1 == str2); // false
    System.out.println(str1.equals(str2)); // true

    2.hashCode

    Verbesserung der Effizienz von Containern mit Hash-Strukturen

    Wenn zwei Referenzen zeigen Für dasselbe Objekt müssen die Hash-Werte gleich sein (ohne Konflikt) und umgekehrt.

    ha Der Hash-Wert kommt von der Adresse, aber nicht von der Adresse 990368553 1629346

    Paketname.Klassenname@Hex-HashCode

    Jetzt schreiben wir die toString-Methode (Vorlage) in der Klasse neu:

    // hashCode
    A a = new A();
    A a1 = new A();
    A a2 = a;
    System.out.println(a.hashCode());
    System.out.println(a1.hashCode());
    System.out.println(a2.hashCode());
    ------------------------------

    Führen Sie das Obige noch einmal aus. Der Code gibt jetzt Folgendes aus:

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

    Außerdem wird die toString-Methode direkt aufgerufen, wenn wir das Objekt direkt ausgeben Standardmäßig:

    // toString
    A a3 = new A("dahe",25,"安全服务工程师");
    System.out.println(a3.toString());

    Ausgabe:

    A{name='dahe', age=25, job='Security Service Engineer'}

    4.finalize

    Wenn das Objekt recycelt wird, ruft das System automatisch das auf finalize-Methode des Objekts. Unterklassen können diese Methode überschreiben und einige Vorgänge ausführen, um Ressourcen freizugeben.

    Hinweis: In JDK18. finalize ist veraltet. Obwohl es uns helfen kann, die zugrunde liegenden Ressourcen des Systems proaktiv freizugeben, habe ich es ehrlich gesagt noch nie verwendet. Wenn es nicht hilfreich ist, führt dies zu einer automatischen Speicherverwaltung Daher ist die Entfernung geplant.

    Beispiel:

    @Override
    public String toString() {
        return "A{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", job='" + job + '\'' +
                '}';
    }

    Überschreiben Sie die Finalisierungsmethode:

    A{name='dahe', age=25, job='安全服务工程师'}

    Darüber hinaus können Sie den Garbage Collector auch aktiv ausführen:

    System.out.println(a3);

    Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Java-Objektklasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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