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). Renvoietruesi les chaînes ont les mêmes caractères dans le même ordre,falsesinon. Cette méthode est sensible à la casse.
equalsIgnoreCase(String other): Semblable àequals, mais ignore la casse. Retournetruesi les chaînes ont les mêmes caractères, indépendamment de leur casse,falsesinon.
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); // 0Défi
FacileCréez une méthode nommée compareStrings qui prend deux chaînes de caractères en entrée et effectue les comparaisons suivantes :
- Vérifie si les deux chaînes sont égales en utilisant
equalset affiche le résultat. - Vérifie si les deux chaînes sont égales (en ignorant la casse) en utilisant
equalsIgnoreCaseet affiche le résultat. - Compare les deux chaînes en utilisant
compareToet affiche le résultat. - Compare les deux chaînes (en ignorant la casse) en utilisant
compareToIgnoreCaseet 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: 0Aide-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 casseequalsIgnoreCase(String other): Comparaison d'égalité insensible à la cassecompareTo(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); // 0Essayez 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);
}
}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
4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloIncrémentation / DécrémentationPost-incrémentation / Post-décrémentationRaccourcis arithmétiquesOpérateurs de comparaisonComparaison de chaînes7Entrées/Sorties de base
Méthodes System.outFormatage de la sortieClasse ScannerRécapitulatif - Jusqu'à 120Récapitulatif - Vrai ou Faux10Méthodes (Fonctions)
Déclaration de méthodesParamètres de méthodeTypes de retourSurcharge de méthodesRécapitulatif - Fonction SigmaRécapitulatif - Fonction de validationMéthodes Void13Opérations sur les chaînes
Méthodes de chaînes, partie 1Méthodes de chaînes, partie 2Formatage de chaînesComparaison de chaînes5Opérateurs, partie 2
Opérateurs logiques, partie 1Opérateurs logiques, partie 2Récapitulatif - Logique simpleOpérateurs logiques, partie 3Opérateurs logiques, partie 43Variables Partie 2
ConstantesConventions de nommageRécapitulatif - Initialisation des variablesType Casting Partie 1Type Casting Partie 26Prise de décision
Instruction IfIf - ElseInstruction SwitchOpérateur ternaireRécapitulatif - If ElseIf - Else imbriqués9Boucles
Boucle For - Partie 1Boucle WhileBoucle Do WhileBreakContinueBoucle For - Partie 2Boucles imbriquéesBoucle infinieRécapitulatif - Entrée dynamique12Parcourir les tableaux
Utilisation de la boucle forBoucle for amélioréeOpérations courantes sur les tableaux