Maison > Java > javaDidacticiel > le corps du texte

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

WBOY
Libérer: 2023-04-20 21:10:06
avant
3182 Les gens l'ont consulté

Lance une question :

Long a = 4l;
Long b = 4l;
a == b //true
Copier après la connexion
Long a = 128l;
Long b = 128l;
a == b //false
Copier après la connexion

Si la valeur de Long est comprise entre [-127,128], vous pouvez utiliser "==" pour déterminer si elle est égale. Si elle n'est pas dans cette plage, "==" ne peut pas l'être. utilisé. La raison est la suivante : code source Explication :

public static Long valueOf(long l) {
        final int offset = 128;
        if (l >= -128 && l <= 127) { // will cache
            return LongCache.cache[(int)l + offset];
        }
        return new Long(l);
    }
Copier après la connexion

Si ce n'est pas entre [-127,128], un nouvel objet sera créé Naturellement "==" deux objets différents, le résultat doit être faux.

Solution :

1. Utilisez longValue() dans Long pour la conversion
Long a = 128l;
Long b = 128l;
a.longValue() == b.longValue() //true
Copier après la connexion
2. Utilisez equals() dans Long
Long a = 128l;
Long b = 128l;
a.equals(b);//true
Copier après la connexion

Voici le code source de cette méthode :

public boolean equals(Object obj) {
        if (obj instanceof Long) {
            return value == ((Long)obj).longValue();
        }
        return false;
    }
Copier après la connexion

Pièges comparatifs entre les deux types Long.

De manière générale, "==" est suffisant pour comparer deux types de données de base. La comparaison de types longs est rarement utilisée.

Mais récemment, lorsque j'écrivais un projet, j'ai rencontré deux comparaisons de types Long. À cette époque, j'utilisais également directement des doubles égaux. Cependant, lors du débogage, j'ai constaté que le code n'entrait pas dans le corps du jugement lorsque les deux types Long. ont été comparés et jugés, puis recherchés en ligne. Les questions associées sont en fait très simples, mais si vous ne le savez pas, il est facile de tomber dans le piège.

La solution est la suivante :

Vous pouvez faire en sorte que deux variables de type Long appellent respectivement la méthode ==longValue()== pour y parvenir.

Code :

Long a=...;
Long b=...;
if (a.longValue() == b.longValue()) {
             ...;
}
Copier après la connexion

En fait, Long est une sorte de classe d'empaquetage de données Java. Ce qui précède est le cas où la classe d'empaquetage Long est convertie en type de données de base long. Ce qui suit est le cas où d'autres classes d'empaquetage de données sont. déballé et converti en types de données de base :

Pour convertir Integer en int, vous devez appeler la méthode intValue(). Pour convertir Double en double, vous devez appeler la méthode doubleValue(). Pour convertir Float en float, vous avez besoin. pour appeler la méthode floatValue()

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