Heim  >  Artikel  >  Java  >  Detaillierte Erläuterung der Codebeispiele von Java Object

Detaillierte Erläuterung der Codebeispiele von Java Object

黄舟
黄舟Original
2017-03-30 10:44:011347Durchsuche

Der unten stehende Herausgeber bringt Ihnen einen Artikel über Java Object Verstehen Sie es wirklich? Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor und werfen wir einen Blick darauf

Einführung: Was sind die Verwendungsszenarien von hashCode() und equal() im täglichen Codieren? Wie implementiert man Klon-Deep-Copy? Was machen wait() und notify()? Was macht die finalize()-Methode? Es scheint, dass es beim Codieren nicht oft verwendet wird und nicht wichtig ist, aber gibt es jemanden wie mich, der mehr darüber wissen möchte? Schließlich ist es das Fundament aller Fundamente.

Das Folgende ist eine einfache und umfassende Zusammenfassung:

1 >

public boolean equals(Object obj) {return (this == obj);}
public native int hashCode();
1. Wenn die Methode equal() überschrieben wird, wird auch hashCode() überschrieben.

2 Wenn equal() true zurückgibt, muss der Hashcode gleich sein . Das heißt: gleiche (identische)

Objekte müssen gleiche Hash-Codes (oder Hash-Codes) haben

3. Wenn der HashCode zweier Objekte gleich ist, sind sie nicht unbedingt gleich.

4. Bei der Suche in einer Sammlung kann Hashcode die Anzahl der

Objektvergleiche erheblich reduzieren und die Sucheffizienz verbessern!

Wenn Sie doppelte Elemente ermitteln, ermitteln Sie die Bucket-Position direkt über die Methode hashcode(). Wenn sich an dieser Position ein Element befindet, rufen Sie die Methode equal() auf, um festzustellen, ob sie gleich sind. Anstatt jedes Element zu durchlaufen und equal() zu vergleichen!

2. clone() deep copy

public class Animal implements Cloneable {
  private int height;
  private int age;

  public Animal(int height, int age){
    this.height = height;
    this.age = age;
  }

  @Override
  public Object clone() throws CloneNotSupportedException {
    return super.clone();
  }
}


public class People implements Cloneable {
  private int height;
  private int age;
  private Animal a;

  public People(int height, int age,Animal a){
    this.height = height;
    this.age = age;
    this.a = a;
  }

  @Override
  public Object clone() throws CloneNotSupportedException {
    People p = (People) super.clone();
    p.a = (Animal) a.clone();
    return p;
  }

}

Animal a1 = new Animal(100,3);
People p1 = new People(173,24,a1);
//深复制
People p2 = (People) p1.clone();

3. wait() und notify() 🎜>•Kann erst nach Erhalt der Objektsperre aufgerufen werden, andernfalls wird eine IllegalMonitorStateException-Ausnahme ausgelöst

•Die Steuerung des Objekts (Monitors) ist jederzeit möglich Eigentum eines Threads sein.

Es gibt drei Möglichkeiten für einen Thread, die Kontrolle zu erlangen: 1 Führen Sie eine synchronisierte Instanzmethode des Objekts aus.

2. Führen Sie die Synchronisierungsmethode

statisch

der entsprechenden Klasse des Objekts aus. 3. Führen Sie den Synchronisationsblock aus, der dem Objekt eine Synchronisationssperre hinzufügt.

Beispiel für die Ausführung einer Synchronisationssperre für dieses Objekt:

  synchronized (pepoleObject) {
    pepoleObject.notifyAll();
    pepoleObject.wait();
  }

4. finalize()Bei Müll Diese Methode wird vom Garbage Collector des Objekts nur einmal aufgerufen, wenn der Collector feststellt, dass keine weiteren

Verweise

auf das Objekt vorhanden sind. Wenn das Objekt recycelt wird und Systemressourcen konfiguriert oder eine andere Bereinigung durchgeführt werden muss, überschreiben Unterklassen die Finalize-Methode, um sie zu implementieren.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Codebeispiele von Java Object. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn