Il existe trois options pratiques pour comparer des chaînes de ca­rac­tè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 ca­rac­tères en Java ?

Alors que l’on peut fa­ci­le­ment comparer les types de données primitifs en Java avec l’opérateur Java == cor­res­pon­dant, c’est un peu plus compliqué dans le cas des chaînes de ca­rac­tè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 cor­res­pon­dant. Cela peut être suffisant dans certains cas, mais dans d’autres, une méthode dif­fé­rente est né­ces­saire pour obtenir le résultat souhaité. Heu­reu­se­ment, ce langage de pro­gram­ma­tion Web offre plusieurs pos­si­bi­li­tés. En voici trois qui sont re­la­ti­ve­ment courantes :

  • Java equals()
  • Java compareTo() pour les strings
  • Opérateur Java ==
Hé­ber­ge­ment Web
Hé­ber­ge­ment Web de pointe au meilleur prix
  • 3x plus rapide, 60 % d'éco­no­mie
  • Haute dis­po­ni­bi­lité >99,99 %
  • Seulement chez IONOS : jusqu'à 500 Go inclus

La méthode Java equals()

La méthode la plus simple et la plus pratique pour comparer le contenu de deux chaînes de ca­rac­tères est la méthode appelée « equals() » en Java. Elle confronte ef­fec­ti­ve­ment les deux valeurs. Si elles cor­res­pon­dent exac­te­ment, la méthode renvoie true (vrai) comme con­fir­ma­tion. Si elles diffèrent d’une quel­conque manière, le résultat sera false (faux). Voici la syntaxe de cette méthode :

public boolean equals(Objet autreObjet)
java

Afin de mieux com­prendre le fonc­tion­ne­ment de la méthode, prenons un exemple concret. Pour cela, nous créons trois chaînes de ca­rac­tè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 main­te­nant ce code avec la commande Java System.out.println, nous obtenons ceci :

true
false
java

chaine1et chaine2sont iden­tiques, mais chaine3est dif­fé­rente des deux autres. Dans cet exemple, la dif­fé­rence est visible à l’œil nu. Cependant, dans d’autres cas de figure, il peut y avoir des chaînes qui se res­semblent à 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 fonc­tionne aussi de manière fiable. Java compareTo() compare les strings lexi­co­gra­phi­que­ment selon la valeur Unicode de chaque caractère dans une chaîne. Les dif­fé­rents ca­rac­tères sont comparés et alignés. Si deux chaînes cor­res­pon­dent, 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 ca­rac­tè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 main­te­nant 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 ma­jus­cules et les mi­nus­cules, utilisez la méthode adaptée compareToIgnoreCase(). Celle-ci fonc­tionne 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 con­sé­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 pro­pre­ment 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
Aller au menu principal