Maison > Java > javaDidacticiel > Explication détaillée des exemples de code de l'objet Java

Explication détaillée des exemples de code de l'objet Java

黄舟
Libérer: 2017-03-30 10:44:01
original
1388 Les gens l'ont consulté

L'éditeur ci-dessous vous proposera un article sur Java Object Le comprenez-vous vraiment ? L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur et jetons un coup d'œil

Introduction : Quels sont les scénarios d'utilisation de hashCode() et equals() dans le codage quotidien ? Comment implémenter la copie profonde de clonage ? Que font wait() et notify() ? Que fait la méthode finalize() ? Il semble qu'il ne soit pas beaucoup utilisé dans le codage et qu'il ne soit pas important, mais y a-t-il quelqu'un comme moi qui veut en savoir plus ? Après tout, c’est le fondement des fondations.

Ce qui suit est un résumé simple et complet :

1. >

public boolean equals(Object obj) {return (this == obj);}
public native int hashCode();
Copier après la connexion
1. Lorsque la méthode equals() est remplacée, hashCode() sera également remplacée

2. Lorsque equals() renvoie true, le hashcode doit être égal. . Autrement dit : les objets

égaux (identiques) doivent avoir des codes de hachage (ou codes de hachage) égaux

3 Si le hashCode de deux objets est le même, ils ne sont pas nécessairement les mêmes.

4. Lors d'une recherche dans une collection, le hashcode peut réduire considérablement le nombre de

comparaisons d'objets et améliorer l'efficacité de la recherche !

Lors de la détermination des éléments en double, localisez directement la position du bucket via la méthode hashcode(). S'il y a un élément à cette position, appelez la méthode equals() pour déterminer s'ils sont égaux. Au lieu de parcourir chaque élément et de comparer equals() !

2. clone() copie approfondie

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();
Copier après la connexion

3. 🎜>•Ne peut être appelé qu'après avoir obtenu le verrouillage de l'objet, sinon une exception IllegalMonitorStateException sera levée

•À tout moment, le contrôle de l'objet (moniteur) ne peut appartenir à un seul thread.

Il existe trois façons pour un thread de prendre le contrôle : 1. Exécuter une méthode d'instance synchronisée de l'objet.

2. Exécutez la méthode de synchronisation

statique

de la classe correspondante de l'objet. 3. Exécutez le bloc de synchronisation qui ajoute un verrou de synchronisation à l'objet.

Exemple d'exécution d'un verrou de synchronisation sur cet objet :

  synchronized (pepoleObject) {
    pepoleObject.notifyAll();
    pepoleObject.wait();
  }
Copier après la connexion

finalize()Quand garbage Cette méthode n'est appelée par le garbage collector de l'objet qu'une seule fois lorsque le collecteur détermine qu'il n'y a plus de

références

à l'objet. Lorsque l'objet est recyclé et doit configurer les ressources système ou effectuer un autre nettoyage, les sous-classes remplacent la méthode finalize pour l'implémenter.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal