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

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

WBOY
WBOYavant
2023-04-20 21:10:063187parcourir

Lance une question :

Long a = 4l;
Long b = 4l;
a == b //true
Long a = 128l;
Long b = 128l;
a == b //false

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

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
2. Utilisez equals() dans Long
Long a = 128l;
Long b = 128l;
a.equals(b);//true

Voici le code source de cette méthode :

public boolean equals(Object obj) {
        if (obj instanceof Long) {
            return value == ((Long)obj).longValue();
        }
        return false;
    }

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()) {
             ...;
}

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!

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