Vidéo: Fin de vie, affectation, affichage et comparaison d'objets 2024
Lorsque vous commencez à travailler avec des objets en Java, vous trouvez que vous pouvez utiliser == et! = comparer des objets entre eux. Par exemple, un bouton que vous voyez sur l'écran de l'ordinateur est un objet. Vous pouvez demander si la chose qui a été simplement cliquée avec la souris est un bouton particulier sur votre écran. Vous faites cela avec l'opérateur d'égalité de Java.
if (e.getSource () == bCopy) {Presse-papiers. setText (qui.getText ());
Le gros problème avec le système de comparaison de Java vient quand vous comparez deux chaînes. Lorsque vous comparez deux chaînes les unes avec les autres, vous ne voulez pas utiliser le double signe égal. Utiliser le double signe égal demanderait, "Est-ce que cette chaîne est stockée exactement au même endroit en mémoire que cette autre chaîne? "Habituellement, ce n'est pas ce que vous voulez demander.
Au lieu de cela, vous voulez généralement demander: "Cette chaîne contient-elle les mêmes caractères que cette autre chaîne? "Pour poser la deuxième question (la question la plus appropriée), le type String de Java a une méthode nommée equals. (Comme toute autre chose dans l'univers connu, cette méthode égale est définie dans l'API Java, abréviation d'Application Programming Interface.)
La méthode equals compare deux chaînes pour voir si elles ont les mêmes caractères. Pour un exemple utilisant la méthode equals de Java, consultez cette liste de code. (La figure montre une exécution du programme dans la liste.)
importer du java statique. lang. Système. *; importer Java. util. Scanner; classe publique CheckPassword {public static void principal (String args []) {out. print ("Quel est le mot de passe?"); Clavier du scanner = nouveau scanner (in); String mot de passe = clavier. prochain(); en dehors. println ("Vous avez tapé >>" + mot de passe + "<<"); en dehors. println (); if (mot de passe == "espadon") {out. println ("Le mot que vous avez tapé est stocké"); en dehors. println ("au même endroit que le réel"); en dehors. println ("mot de passe: vous devez être un"); en dehors. println ("hacker.");} else {out. println ("Le mot que vous avez tapé n'est pas"); en dehors. println ("stocké au même endroit que"); en dehors. println ("le vrai mot de passe, mais c'est"); en dehors. println ("pas de gros problème");} out. println (); if (mot de passe, égal à ("espadon")) {out. println ("Le mot que vous avez tapé a le"); en dehors. println ("mêmes caractères que le réel"); en dehors. println ("mot de passe, vous pouvez utiliser notre"); en dehors. println ("système précieux");} else {out. println ("Le mot que vous avez tapé n'a pas"); en dehors. println ("ont les mêmes caractères que"); en dehors. println ("le vrai mot de passe. Vous ne pouvez pas"); en dehors. println ("utilisez notre précieux système.");} clavier. close ();}}
Dans la liste, le clavier d'appel. next () saisit le mot que l'utilisateur tape sur le clavier de l'ordinateur. Le code place ce mot dans la variable nommée mot de passe. Ensuite, les instructions if du programme utilisent deux techniques différentes pour comparer le mot de passe avec "espadon".
Les exemples du livre imprimé sont essentiellement basés sur du texte, mais vous pouvez trouver des versions plus fantaisistes de la plupart des exemples sur le site Web de Dummies. Ces versions colombophiles ont des fenêtres, des boutons, des champs de texte et d'autres éléments d'une interface utilisateur graphique (GUI) typique.
La plus appropriée des deux techniques utilise la méthode égale de Java. La méthode equals a l'air drôle parce que quand vous l'appelez, vous mettez un point après une chaîne et mettez l'autre chaîne entre parenthèses. Mais c'est comme ça que vous devez le faire.
En appelant la méthode equals de Java, peu importe quelle chaîne obtient le point et laquelle obtient les parenthèses. Par exemple, dans la liste, vous auriez pu écrire
if ("espadon", égal à (mot de passe))
La méthode fonctionnerait aussi bien.
Un appel à la méthode égale de Java semble déséquilibré, mais ce n'est pas le cas. Il y a une raison derrière le déséquilibre apparent entre le point et les parenthèses. L'idée est que vous avez deux objets: l'objet mot de passe et l'objet "espadon".
Chacun de ces deux objets est de type String. (Toutefois, le mot de passe est une variable de type String, et "espadon" est un littéral String.) Lorsque vous écrivez un mot de passe. equals ("espadon"), vous appelez une méthode equals appartenant à l'objet password. Lorsque vous appelez cette méthode, vous alimentez "espadon" à la méthode en tant que paramètre de la méthode (jeu de mots).
Lorsque vous comparez des chaînes les unes avec les autres, utilisez la méthode égale et non le double signe égal.