Lors des tests d'égalité de String
's en Java, j'ai toujours utilisé equals()
parce que cela me semble être la méthode la plus naturelle. Après tout, son nom indique déjà ce qu'il est censé faire. Cependant, un de mes collègues m'a récemment dit que j'avais appris à utiliser compareTo() == 0
au lieu de equals()
. Cela ne me semble pas naturel (car il compareTo()
est censé fournir un ordre et ne pas comparer pour l'égalité) et même quelque peu dangereux (car compareTo() == 0
n'implique pas nécessairement l'égalité dans tous les cas, même si je sais que c'est le cas pour String
's) pour moi.
Il ne savait pas pourquoi on lui avait appris à utiliser compareTo()
au lieu de equals()
for String
, et je ne pouvais pas non plus trouver de raison. Est-ce vraiment une question de goût personnel ou y a-t-il une vraie raison pour l'une ou l'autre de ces méthodes?
compareTo() == 0
n'implique pas nécessairement l'égalité dans tous les cas". C'est absolument correct! C'est exactement ce que signifie l'expression «cohérent avec égal» dans les spécifications de l'API Java, par exemple dans la spécification de la classe Comparable . Par exemple, la méthode de comparaison de String est cohérente avec equals, mais la méthode de comparaison de BigDecimal est incompatible avec equals.
.equalsIgnoreCase()
est la comparaison la plus rapide si elle est appropriée, sinon.equals()
c'est ce que vous voulez.