Menu
Coddy logo textTech

Comparaison de chaînes

Fait partie de la section Fondamentaux du Journey Java de Coddy — leçon 70 sur 73.

En Java, comparer des chaînes de caractères n'est pas aussi simple que de comparer des types de données primitifs comme les entiers ou les caractères. Vous ne pouvez pas utiliser l'opérateur == pour comparer l'égalité des chaînes car les chaînes sont des objets, et == comparerait leurs adresses mémoire, et non leur contenu. Au lieu de cela, vous devez utiliser des méthodes spécifiques fournies par la classe String pour comparer les caractères réels à l'intérieur des chaînes.

Voici les principales méthodes de comparaison de chaînes de caractères :

  • equals(Object other): Compare la chaîne à un autre objet (généralement une autre chaîne). Renvoie true si les chaînes ont les mêmes caractères dans le même ordre, false sinon. Cette méthode est sensible à la casse.
  • equalsIgnoreCase(String other) : Semblable à equals, mais ignore la casse. Retourne true si les chaînes ont les mêmes caractères, indépendamment de leur casse, false sinon.
  • compareTo(String other) : Compare deux chaînes de caractères de manière lexicographique (en se basant sur leurs valeurs Unicode). Retourne 0 si les chaînes sont égales, un nombre négatif si la première chaîne est inférieure à la seconde, et un nombre positif si la première chaîne est supérieure à la seconde. Cette méthode est sensible à la casse.
  • compareToIgnoreCase(String other) : Semblable à compareTo, mais ignore la casse.

Voici un exemple :

String str1 = "hello";
String str2 = "hello";
String str3 = "HELLO";
String str4 = "world";

boolean eq1 = str1.equals(str2); // vrai
boolean eq2 = str1.equals(str3); // faux
boolean eq3 = str1.equalsIgnoreCase(str3); // vrai

int cmp1 = str1.compareTo(str2); // 0
int cmp2 = str1.compareTo(str4); // valeur négative
int cmp3 = str4.compareTo(str1); // valeur positive
int cmp4 = str1.compareToIgnoreCase(str3); // 0
challenge icon

Défi

Facile

Créez une méthode nommée compareStrings qui prend deux chaînes de caractères en entrée et effectue les comparaisons suivantes :

  1. Vérifie si les deux chaînes sont égales en utilisant equals et affiche le résultat.
  2. Vérifie si les deux chaînes sont égales (en ignorant la casse) en utilisant equalsIgnoreCase et affiche le résultat.
  3. Compare les deux chaînes en utilisant compareTo et affiche le résultat.
  4. Compare les deux chaînes (en ignorant la casse) en utilisant compareToIgnoreCase et affiche le résultat.

Exemple de sortie pour les chaînes d'entrée HELLO et hello :

HELLO equals hello: false
HELLO equalsIgnoreCase hello: true
HELLO compareTo hello: -32
HELLO compareToIgnoreCase hello: 0

Aide-mémoire

En Java, utilisez des méthodes spécifiques pour comparer des chaînes de caractères, et non l'opérateur == qui compare les adresses mémoire :

  • equals(Object other) : Comparaison d'égalité sensible à la casse
  • equalsIgnoreCase(String other) : Comparaison d'égalité insensible à la casse
  • compareTo(String other) : Comparaison lexicographique sensible à la casse (renvoie 0 si égal, négatif si le premier < le second, positif si le premier > le second)
  • compareToIgnoreCase(String other) : Comparaison lexicographique insensible à la casse
String str1 = "hello";
String str2 = "HELLO";

boolean eq1 = str1.equals(str2); // false
boolean eq2 = str1.equalsIgnoreCase(str2); // true

int cmp1 = str1.compareTo(str2); // positive value
int cmp2 = str1.compareToIgnoreCase(str2); // 0

Essayez vous-même

import java.util.Scanner;

public class Main {
    public static void compareStrings(String str1, String str2) {
        // Écrivez votre code ici
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str1 = scanner.nextLine();
        String str2 = scanner.nextLine();
        compareStrings(str1, str2);
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux