Comparer des strings avec Java compareTo() et equals()

Il existe trois options pratiques pour comparer des chaînes de caractères (strings) : Java compareTo(), Java equals() et l’opérateur ==. Découvrez ces trois méthodes dans notre article.

Comment comparer des chaînes de caractères en Java ?

Alors que l’on peut facilement comparer les types de données primitifs en Java avec l’opérateur Java == correspondant, c’est un peu plus compliqué dans le cas des chaînes de caractères Java. Vous pouvez utiliser l’opérateur, mais il ne comparera pas le contenu des deux chaînes, seulement la référence à l’objet correspondant. Cela peut être suffisant dans certains cas, mais dans d’autres, une méthode différente est nécessaire pour obtenir le résultat souhaité. Heureusement, ce langage de programmation Web offre plusieurs possibilités. En voici trois qui sont relativement courantes :

  • Java equals()
  • Java compareTo() pour les strings
  • Opérateur Java ==
Hébergement Web
Hébergement Web flexible, performant et sûr
  • Certificat SSL et protection DDoS
  • Sauvegarde et restauration des données
  • Assistance 24/7 et conseiller personnel

La méthode Java equals()

La méthode la plus simple et la plus pratique pour comparer le contenu de deux chaînes de caractères est la méthode appelée « equals() » en Java. Elle confronte effectivement les deux valeurs. Si elles correspondent exactement, la méthode renvoie true (vrai) comme confirmation. Si elles diffèrent d’une quelconque manière, le résultat sera false (faux). Voici la syntaxe de cette méthode :

public boolean equals(Objet autreObjet)
java

Afin de mieux comprendre le fonctionnement de la méthode, prenons un exemple concret. Pour cela, nous créons trois chaînes de caractères et comparons la première de ces chaînes avec les deux autres. Voici à quoi cela ressemble dans la pratique :

public class Main {
    public static void main(String[] args) {
        String chaine1 = "Ceci est une chaîne";
        String chaine2 = "Ceci est une chaîne";
        String chaine3 = "Ceci est une toute autre chaîne";
        System.out.println(chaine1.equals(chaine2));
        System.out.println(chaine1.equals(chaine3));
    }
}
java

Si nous affichons maintenant ce code avec la commande Java System.out.println, nous obtenons ceci :

true
false
java

chaine1et chaine2sont identiques, mais chaine3est différente des deux autres. Dans cet exemple, la différence est visible à l’œil nu. Cependant, dans d’autres cas de figure, il peut y avoir des chaînes qui se ressemblent à première vue, mais qui diffèrent par un petit détail. Java equals() est une très bonne méthode pour éviter les erreurs à ce niveau.

Java compareTo() pour les strings

La deuxième méthode est un peu plus complexe, mais fonctionne aussi de manière fiable. Java compareTo() compare les strings lexicographiquement selon la valeur Unicode de chaque caractère dans une chaîne. Les différents caractères sont comparés et alignés. Si deux chaînes correspondent, la méthode renvoie 0 comme réponse. Si la première chaîne est plus courte que la deuxième, une valeur négative est émise. En revanche, si elle est plus longue, la sortie est une valeur positive. Voici la syntaxe de cette méthode :

public int compareTo(Chaine autreChaine)
java

Voici à nouveau un exemple concret pour mettre la syntaxe en pratique. Nous créons à nouveau trois chaînes de caractères et comparons la première avec les deux autres.

public class Main {
    public static void main(String[] args) {
        String chaine1 = "Ceci est une chaîne";
        String chaine2 = "Ceci est une chaîne";
        String chaine3 = "Ceci est une toute autre chaîne";
        System.out.println(chaine1.compareTo(chaine2));
        System.out.println(chaine1.compareTo(chaine3));
    }
}
java

Si nous affichons maintenant ce code avec System.out.println, nous obtenons ceci :

0
-12
java

Si vous voulez utiliser Java compareTo() pour des strings, mais en ignorant les majuscules et les minuscules, utilisez la méthode adaptée compareToIgnoreCase(). Celle-ci fonctionne comme suit :

public class Main {
    public static void main(String[] args) {
        String chaine1 = "Ceci est une chaîne";
        String chaine2 = "Ceci est une chaîne";
        String chaine3 = "CECI EST UNE CHAÎNE";
        System.out.println(chaine1.compareToIgnoreCase(chaine2));
        System.out.println(chaine1.compareToIgnoreCase(chaine3));
    }
}
java

La sortie change en conséquence :

0
0
java

L’opérateur Java ==

Comme mentionné plus tôt, vous pouvez en principe aussi utiliser l’opérateur == pour comparer deux strings. Il comparera les références et non les valeurs proprement dites. Voici un exemple :

public class Main {
    public static void main(String[] args) {
        String chaine1 = "Ceci est une chaîne";
        String chaine2 = "Ceci est une chaîne";
        String chaine3 = new String("Ceci est une chaîne");
        System.out.println(chaine1 == chaine2);
        System.out.println(chaine1 == chaine3);
    
}
java

Comme chaine1 et chaine2 se réfèrent à la même instance, la sortie est « true ». Par contre, chaine3 se réfère à une autre instance. Le résultat est donc « false », bien que la valeur ou le texte à l’intérieur des chaînes soit identique.

true
false
java
Cet article vous a-t-il été utile ?
Page top