Maison  >  Article  >  Java  >  Comment utiliser la classe d'objet Java

Comment utiliser la classe d'objet Java

WBOY
WBOYavant
2023-05-13 17:13:141440parcourir

    Méthode 1.equals

    == Opérateur

    Opérateur de comparaison, qui peut déterminer à la fois les types de base et les types de référence

    Si vous déterminez le type de base, déterminez si les valeurs sont égales

    Si vous déterminez le type de référence, puis jugez si les adresses sont égales, c'est-à-dire si elles sont le même objet.

    equals

    est une méthode de la classe objet. Elle ne peut juger que le type de référence

    object - est égal au code source :

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

    Vous pouvez clairement voir que dans la classe d'objets, la méthode égale consiste à déterminer si les adresses des objets sont les mêmes (s'il s'agit du même objet)

    Cependant, d'autres classes de types de données remplaceront la méthode égale, telles que comme la réécriture de la classe String : (déterminant si les valeurs​​de deux chaînes sont égales)

    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);
    }

    Exemple :

    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

    Améliorer l'efficacité des conteneurs avec des structures de hachage

    Si deux références pointent au même objet, les valeurs de hachage doivent être les mêmes (sans conflit), et vice versa

    ha La valeur de hachage vient de l'adresse mais pas de l'adresse

    Démo :

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

    Sortie :

    1324119927
    990368553
    1324119927

    3.toString

    Renvoie la représentation sous forme de chaîne de l'objet

    Code source :

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

    Exemple :

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

    Sortie :

    classes.A@4162 9346

    Nom du package.Nom de la classe@hex hashCode

    Maintenant, nous réécrivons la méthode toString (modèle) dans la classe :

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

    Exécutez à nouveau ce qui précède. Le code génère maintenant ce qui suit :

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

    De plus, lorsque nous produisons directement l'objet, la méthode toString sera appelée directement par défaut :

    System.out.println(a3);

    Sortie :

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

    4.finalize

    Lorsque l'objet est recyclé, le système appelle automatiquement le méthode finalize de l'objet. Les sous-classes peuvent remplacer cette méthode et effectuer certaines opérations pour libérer des ressources

    Remarque : dans JDK18. finalize est obsolète. Bien que cela puisse nous aider à libérer de manière proactive les ressources sous-jacentes du système, pour être honnête, je ne l'ai jamais utilisé. Java gère automatiquement la mémoire, ce qui entraînera des risques potentiels pour la sécurité du système. , il est donc prévu de le supprimer.

    Exemple :

    // finalize
    A a4 = new A("dh",33,"架构师");
    a4 = null; // 这是a4成为了垃圾,垃圾回收器就会回收对象
    // 在销毁对象之前,会调用对象的finalize方法
    // 程序员就可以在这个方法中写入自己的业务,释放资源

    Remplacez la méthode de finalisation :

    @Override
    protected void finalize() throws Throwable {
        System.out.println("我们销毁对象");
    }

    De plus, vous pouvez également exécuter activement le garbage collector :

    System.gc(); // 主动调用垃圾回收器

    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!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer