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

Comment utiliser la classe d'objet Java

WBOY
Libérer: 2023-05-13 17:13:14
avant
1492 Les gens l'ont consulté

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

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

    Exemple :

    String str1 = new String("hello");
    String str2 = new String("hello");
    System.out.println(str1 == str2); // false
    System.out.println(str1.equals(str2)); // true
    Copier après la connexion

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

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

    Exemple :

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

    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 + '\'' +
                '}';
    }
    Copier après la connexion

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

    A{name='dahe', age=25, job='安全服务工程师'}
    Copier après la connexion

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

    System.out.println(a3);
    Copier après la connexion

    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方法
    // 程序员就可以在这个方法中写入自己的业务,释放资源
    Copier après la connexion

    Remplacez la méthode de finalisation :

    @Override
    protected void finalize() throws Throwable {
        System.out.println("我们销毁对象");
    }
    Copier après la connexion

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

    System.gc(); // 主动调用垃圾回收器
    Copier après la connexion

    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:yisu.com
    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