Heim  >  Artikel  >  Java  >  So verwenden Sie Methoden in der Java-Objektklasse

So verwenden Sie Methoden in der Java-Objektklasse

王林
王林nach vorne
2023-04-18 18:13:11684Durchsuche

1. Einführung in die Object-Klasse

Object ist eine von Java standardmäßig bereitgestellte Klasse. Mit Ausnahme der Object-Klasse verfügen alle Klassen in Java über Vererbungsbeziehungen. Standardmäßig erbt es die übergeordnete Klasse Object. Das heißt, Objekte aller Klassen können über die Referenz von Object empfangen werden.

Beispiel: Verwenden Sie Object, um Objekte aller Klassen zu empfangen

class Person{}
class Student{}
public class Test {
    public static void main(String[] args) {
        function(new Person());
        function(new Student());
    }
    public static void function(Object obj) {
        System.out.println(obj);
    }
}
//执行结果:
Person@1b6d3586
Student@4554617c

Während der Entwicklung ist die Object-Klasse also der höchste einheitliche Parametertyp. Die Object-Klasse verfügt aber auch über einige klar definierte Methoden. Wie folgt:

So verwenden Sie Methoden in der Java-Objektklasse

Hier sind drei der Methoden: toString()-Methode, equal()-Methode, hashcode()-Methode

2 Überschreiben Sie die toString-Methode, um das Objekt zu drucken

Wenn wir den Inhalt drucken möchten des Objekts, was durch Überschreiben der toString-Methode in der Object-Klasse erreicht werden kann!

Im Folgenden wird erläutert, warum die toString()-Methode überschrieben werden sollte.

Der folgende Code möchte ein Person-Objekt drucken: println-Methodenquellcode hier. Im Quellcode wird die valueOf-Methode in der String-Klasse aufgerufen. Wenn Sie zum Quellcode bei valueOf springen, können Sie feststellen, dass die toString-Methode tatsächlich im Methodenkörper aufgerufen wird Schauen wir uns zu diesem Zeitpunkt die spezifische Implementierung von toString an.

So verwenden Sie Methoden in der Java-ObjektklassegetClass().getName() gibt die Laufzeitklasse (Class) dieses Objekts und den Namen der Entität (Klasse, Schnittstelle, Array-Klasse) zurück , Basistyp oder void), dargestellt durch dieses Klassenobjekt in Form eines Strings

hashCode()-Methode gibt die „Adresse“ zurück

Integer.toHexString(hashCode()) Ruft den Hash-Codewert dieses Objekts ab (int-Typ), und verwendet die Wrapper-Klasse Integer, um den Hash-Code dieses int-Typwerts abzurufen, ihn in eine hexadezimale Ganzzahl ohne Vorzeichen umzuwandeln und die konvertierte hexadezimale Ganzzahl in Form einer Zeichenfolge auszudrückenSo verwenden Sie Methoden in der Java-Objektklasse

Die Ausgabefunktion println wird also durch Aufrufen von toString implementiert auf der untersten Ebene. Wenn Sie das Druckobjekt für den spezifischen Inhalt realisieren möchten, müssen wir nur die toString-Methode in der Object-Klasse nach unseren eigenen Vorstellungen umschreiben

public class Person {
    String name;
    String gender;
    int age;
    public Person(String name, String gender, int age) {
        this.name = name;
        this.gender = gender;
        this.age = age;

    }
    public static void main(String[] args) {
        Person person = new Person("Jim","男", 18);
        System.out.println(person);
    }
}

Ausführungsergebnis:

So verwenden Sie Methoden in der Java-Objektklasse

3 gleicht die Methode aus

Wenn == in Java verglichen wird:

Wenn die linke und rechte Seite von == Basistypvariablen sind, besteht der Vergleich darin, ob die Werte in den Variablen gleich sind

So verwenden Sie Methoden in der Java-ObjektklasseWenn Die linke und rechte Seite von == sind Variablen vom Referenztyp. Der Vergleich besteht darin, ob die Adressen der Referenzvariablen gleich sind

Wenn Sie den Inhalt im Objekt vergleichen möchten, müssen Sie die Methode equal im Objekt neu schreiben, weil Die Equals-Methode vergleicht standardmäßig auch basierend auf der Adresse. Das Folgende ist der Quellcode der Equals-Methode:

  • Objektvergleichscodebeispiel:
  • public class Person {
        String name;
        String gender;
        int age;
    
        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + '\'' +
                    ", gender='" + gender + '\'' +
                    ", age=" + age +
                    '}';
        }
    
        public Person(String name, String gender, int age) {
            this.name = name;
            this.gender = gender;
            this.age = age;
    
        }
        public static void main(String[] args) {
            Person person = new Person("xin","男", 21);
            System.out.println(person);
        }
    }
  • Ausführungsergebnis:

4. HashCode-Methode

Die Hashcode-Methode wird verwendet, um zu bestimmen, ob das Objekt an derselben Stelle im Speicher gespeichert ist So verwenden Sie Methoden in der Java-Objektklasse

Die Funktion von hashCode() in der Hash-Tabelle besteht darin, den Hash-Code des Objekts abzurufen und dann zu bestimmen, ob sich das Objekt in der Hash-Tabelle befindet Standort.

Quellcode der HashCode-Methode:

So verwenden Sie Methoden in der Java-Objektklasse

Diese Methode ist eine native Methode und die unterste Ebene ist in C/C++-Code geschrieben; sie kann im Compiler nicht beobachtet werden.

Wir glauben, dass zwei Objekte mit demselben Namen und demselben Alter dasselbe Objekt sind und am selben Ort gespeichert werden sollten.

Sehen Sie sich den unten angegebenen Code an. Es gibt kein Überschreiben der hashCode()-Methode der beiden Objekte haben den gleichen Inhalt, aber der resultierende Hash-Wert ist unterschiedlich:

class Person{
    private String name ;
    private int age ;
    public Person(String name, int age) {

        this.age = age ;
        this.name = name ;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false ;
        }
        if(this == obj) {
            return true ;
        }
        //不是Person类对象
        if (!(obj instanceof Person)) {
            return false ;
        }
        Person person = (Person) obj ; // 向下转型,比较属性值
        return this.name.equals(person.name) && this.age==person.age ;
    }

}

public class Test {
    public static void main(String[] args) {
        Person p1 = new Person("xin", 20);
        Person p2 = new Person("xin", 20);
        Person p3 = new Person("rong", 21);

        System.out.println(p1.equals(p2));
        System.out.println(p1.equals(p3));

    }
}

Ausführungsergebnis:

So verwenden Sie Methoden in der Java-Objektklasse

Wenn wir also glauben wollen, dass zwei Objekte den gleichen Inhalt haben, sollten ihre Speicherorte gleich sein, und das brauchen wir um die Methode hashCode() neu zu schreiben.

class Person {
    public String name;
    public int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
public class TestDemo4 {
    public static void main(String[] args) {
        Person per1 = new Person("xin", 21) ;
        Person per2 = new Person("xin", 21) ;
        System.out.println(per1.hashCode());
        System.out.println(per2.hashCode());
    }
}

Ausführungsergebnis:

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Methoden in der 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