Maison > Java > JavaBase > Comment déterminer si deux objets sont égaux en Java

Comment déterminer si deux objets sont égaux en Java

Libérer: 2019-11-22 11:00:31
original
6217 Les gens l'ont consulté

Comment déterminer si deux objets sont égaux en Java

La méthode equals() peut être utilisée en Java pour déterminer si deux objets sont égaux La méthode equals() est utilisée pour comparer une chaîne avec un spécifié. objet. Renvoie true si l'objet donné est égal à la chaîne ; sinon, false.

Le code source de cette méthode est le suivant :

public boolean equals(Object obj) {    
          return (this == obj);
    }
Copier après la connexion

Tous les objets ont une identification (adresse mémoire) et un statut (données), et "==" compare les adresses mémoire des deux objets , donc on dit que l'utilisation de la méthode equals() de Object consiste à comparer si les adresses mémoire de deux objets sont égales, c'est-à-dire que si object1.equals(object2) est vrai, cela signifie que equals1 et equals2 font réellement référence à l'objet. même objet.

Bien que parfois la méthode equals() d'Object puisse répondre à certaines de nos exigences de base, nous devons être conscients que la plupart du temps nous comparons deux objets. À l'heure actuelle, la méthode equals() d'Object Ce n'est pas le cas. possible. En fait, dans le JDK, les classes d'encapsulation telles que String et Math réécrivent toutes la méthode equals().

Ce qui suit est la méthode equals() de String :

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = count;
        if (n == anotherString.count) {
        char v1[] = value;
        char v2[] = anotherString.value;
        int i = offset;
        int j = anotherString.offset;
        while (n-- != 0) {
            if (v1[i++] != v2[j++])
            return false;
        }
        return true;
        }
    }
    return false;
    }
Copier après la connexion

Pour ce segment de code : if (v1[i++] != v2[j++]) return false on peut voir très clairement ; La méthode equals() de String effectue une comparaison de contenu, pas une comparaison de référence. Quant aux autres classes d’encapsulation, elles sont similaires.

Dans la spécification Java, son utilisation de la méthode equals() doit suivre les règles suivantes :

La méthode equals implémente l'égalité sur les références d'objets non nulles :

1. Réflexivité : pour toute valeur de référence non nulle x, x.equals(x) doit renvoyer vrai.

2. Symétrie : pour toute valeur de référence non nulle x et y, x.equals(y) doit renvoyer vrai si et seulement si y.equals(x) renvoie vrai.

3. Transitivité : Pour toute valeur de référence non nulle x, y et z, si x.equals(y) renvoie vrai et y.equals(z) renvoie vrai, alors x.equals(z ) Devrait renvoyer vrai.

4. Cohérence : pour toutes les valeurs de référence non nulles x et y, appeler x.equals(y) plusieurs fois renvoie toujours vrai ou renvoie toujours faux, à condition que les informations utilisées dans la comparaison égale sur l'objet n'a pas été révisé.

5. Pour toute valeur de référence non nulle x, x.equals(null) doit renvoyer false.

Pour les règles ci-dessus, il est préférable que nous les respections lors de l'utilisation, sinon des erreurs inattendues se produiront.

Pour comparer en java, il faut choisir la méthode de comparaison appropriée en fonction du type de comparaison :

1) Dans le champ objet, utilisez la méthode égale.

2) Énumération de type sécurisé, utilisez égal ou ==.

3) Champs d'objet éventuellement nuls : utilisez == et égal.

4) Champ Array : utilisez Arrays.equals.

5) Types de données primitifs sauf float et double : utilisez ==.

6) Type Float : utilisez Float.foatToIntBits pour convertir en type int, puis utilisez ==.

7) Type double : utilisez Double.doubleToLongBit pour convertir en type long, puis utilisez ==.

Pour plus de connaissances sur Java, veuillez prêter attention au tutoriel de base Java.

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