|
Forum |
|
Réagissez
dans les forums
de JDN Développeurs
|
Java dispose de trois manières pour comparer des données
: l'opérateur == (et son compère
!=), la méthode equals()
et la méthode compareTo().
Chacune de ces manières touche à un domaine bien à elle, et
il faut connaître leurs usages pour en tirer toute la substantifique
moelle.
Les trois manières peuvent déjà se scinder en deux groupes
: en effet, les opérateurs ==
& co. ne travaillent que sur des valeurs primitives appartenant
à un même objet, tandis que les deux autres méthodes comparent
des valeurs d'objets différents.
Ainsi, == est tout à fait
indiqué pour des tests simples comme suit :
if (this.valeur == null) return false;
De son
côté, equals(), en tant que
méthode de la classe racine Object,
permet de comparer deux objets entre eux (ou, plus précisément,
elle vérifie que les deux références d'objet sont identiques).
L'utilisation de cette méthode n'est pas aussi simple que
cela, car elle est implémentée de manière très différente
au sein de plus de 150 classes différentes sur l'ensemble
de l'API Java. On peut dire tout simplement que equals()
permet de comparer deux objets, si tant est que ces objets
implémentent cette méthode.
C'est pourquoi le test d'égalité sur des valeurs non primitives
est plutôt à remettre dans les mains de equals()
:
if (this.valeur.equals("T'es pas cap!"))
return true;
Ici, equals() compare les
valeurs.
compareTo(), enfin, compare
également des valeurs d'objet, mais la classe doit implémenter
l'interface Comparable, ce qui inclut tout de même String,
Date, Integer,
Double, Float...
Son utilité est que, en comparaison aux deux autres manières
de tester des valeurs, elle permet également de comparer les
deux valeurs entre elles (plus grande, plus petite)
|