equals en Java
Comparez le texte String avec equals pour que les mots assortis affichent true. Dans Yard.java, écrivez String a = "red"; et String b = "red";, puis affichez a.equals(b). Ajoutez String c = "blue"; et affichez a.equals(c). Compilez avec javac Yard.java et exécutez java Yard. L’écran doit montrer true, puis false. Une deuxième démo construit deux objets new String("red") pour que == puisse afficher false tandis que equals affiche encore true. Laissez debugging pour la page suivante — cette leçon oppose la correspondance de contenu à l’identité d’objet.
Faire correspondre le texte avec equals
La page polymorphisme a fait tourner des corps horn différents via des variables typées Machine. Cette page compare le texte. Ouvrez Yard.java. Gardez le nom de classe public Yard. Supprimez les démos restantes Machine / Truck / Car si elles enterrent l’histoire des chaînes, les remplissages abstract restants, les démos de chemin, et tout Scanner clavier. Le programme ne doit pas attendre la frappe. Vous n’avez pas besoin de ligne import pour ces démos.
Dans Yard.main, construisez trois chaînes :
String a = "red";
String b = "red";
String c = "blue";
Affichez les comparaisons :
System.out.println(a.equals(b));
System.out.println(a.equals(c));
La méthode equals regarde les caractères. Le même texte renvoie true. Un texte différent renvoie false.
public class Yard {
public static void main(String[] args) {
String a = "red";
String b = "red";
String c = "blue";
System.out.println(a.equals(b));
System.out.println(a.equals(c));
}
}
Depuis le dossier qui contient Yard.java, lancez javac Yard.java. Quand les parenthèses, accolades et points-virgules correspondent, javac n’écrit aucune ligne de son cru. Puis lancez java Yard — pas java Yard.java. Enlevez la fin .java de la commande d’exécution. Gardez une classe public dans le fichier pour que le nom corresponde à Yard.
L’écran montre true, puis false. Parcourez l’exécution une fois. Java démarre à Yard.main. a.equals(b) compare red avec red et affiche true. a.equals(c) compare red avec blue et affiche false. Vous avez appelé une méthode sur a et passé l’autre chaîne en argument.
Si vous voyez encore tone / honk / beep d’un fichier polymorphisme, passez au fichier d’enseignement equals et relancez java Yard. Si vous affichez les chaînes elles-mêmes au lieu des résultats equals, vous verrez red et blue à l’écran — enveloppez a.equals(b) dans println pour que le boolean apparaisse.
Dites la règle à voix haute en regardant l’écran : equals demande si le texte correspond caractère par caractère. N’inventez pas une fenêtre debugger sur cette page. Debugging attend la leçon suivante.
Contraster == avec equals sur new String
Un second programme construit deux objets String séparés avec new. Tous deux portent le texte red. Le programme affiche a == b puis a.equals(b).
public class Yard {
public static void main(String[] args) {
String a = new String("red");
String b = new String("red");
System.out.println(a == b);
System.out.println(a.equals(b));
}
}
Compilez avec javac Yard.java, puis exécutez java Yard. L’écran montre false, puis true. Le contrôle == demande si a et b sont exactement le même objet en mémoire. Deux appels new String("red") construisent deux objets, donc == affiche false. Le contrôle equals regarde encore les caractères, donc il affiche true.
Relisez les deux lignes dans main. Première ligne : identité avec ==. Seconde ligne : contenu avec equals. Gardez les deux affichages pour cette forme d’enseignement afin que le contraste reste sur un seul écran. Si vous n’affichez que ==, vous manquez la correspondance de contenu que cette page enseigne aussi.
Sur des littéraux débutants comme "red" sans new, Java peut réutiliser le même objet pooled, donc == peut parfois sembler true par accident. Cette seconde démo utilise exprès new String("red") pour que le contrôle d’identité reste clairement false tandis que le contenu reste true. Préférez equals quand le texte vous importe.
Si des démos polymorphisme restantes restent à côté, gardez-les comme histoire. Pour cette leçon, lancez le fichier d’enseignement equals pour que l’écran montre des boolean, pas des mots horn. Si javac se plaint de classes public en double, gardez seulement Yard public.
Comparé aux appels de polymorphisme
Sur la page polymorphisme, un nom de méthode a fait tourner des corps différents via des variables typées parent. Sur cette page, un nom de méthode — equals — répond si deux chaînes portent le même texte, et == répond si elles sont le même objet. Vous compilez encore Yard.java et exécutez java Yard. Les nouveaux jetons sont equals, les affichages boolean true / false, et le contraste == avec new String.
Si un fichier restant Machine t = new Truck() est encore ouvert, vous verrez des appels horn. Passez au fichier equals pour que main construise des chaînes et affiche les résultats de comparaison. Gardez les démos d’outils debugging hors de cette page. Gardez la saisie clavier hors de cette page.
Ce que cette page laisse pour debugging
Cette page compare le contenu des chaînes et montre pourquoi == est le mauvais défaut pour le texte. La page suivante montre debugging, où vous trouvez pourquoi un programme se comporte mal avec des lectures soigneuses de l’écran et de la source. Restez avec equals et == ici. N’exigez pas encore un parcours debugger complet.
Quand vous déboguerez plus tard une branche incorrecte, un échec equals est une cause fréquente. Traitez cette page comme la moitié comparaison de cette histoire voisine. Terminez les deux démos Yard jusqu’à ce que true / false et false / true paraissent automatiques avant d’ouvrir la leçon debugging.
Avant debugging
Vous pouvez appeler a.equals(b) sur un texte red assorti et voir true, puis voir false pour blue. Vous pouvez construire deux objets new String("red") et voir == afficher false tandis que equals affiche true. Compilez Yard.java et exécutez java Yard pour chaque démo conservée à tour de rôle. La correspondance de contenu et l’identité d’objet sont restées séparées. La page suivante est debugging, où vous chassez les erreurs avec l’écran et la source côte à côte.
Gardez la démo à trois chaînes avec equals pour un contrôle de contenu clair. Gardez la démo new String pour un contraste == clair. Gardez les fichiers debugging hors de cette page. Ces trois habitudes sont le point de contrôle avant d’avancer. Quand equals affiche true pour un texte assorti — et quand == affiche false pour deux nouveaux objets avec ce texte — cette leçon a fait son travail et vous êtes prêt pour le sujet suivant sur debugging.
Un dernier passage dans le dossier : un Yard public, des comparaisons de chaînes dans main, pas d’attente clavier, pas de debugger forcé. Lancez javac Yard.java et java Yard une fois de plus sur la démo ouverte. Si l’écran affiche encore les boolean attendus, l’histoire de comparaison est solide et le cours peut passer à debugging à la page suivante.
🧠 Testez Vos Connaissances
Testez Vos Connaissances
Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet
📝 Instructions
- Lisez chaque question attentivement
- Sélectionnez la meilleure réponse pour chaque question
- Vous pouvez refaire le quiz autant de fois que vous le souhaitez
- Votre progression sera affichée en haut