PRATIQUE JAVA 
Égalités et comparaisons en Java
 
Au sein de Java, toutes les méthodes de comparaison ne sont pas égales entre elles. Présentation de l'utilisation de chacune. (28/01/2005)
  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)…

 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page