Comparaison d'objets en java

Lorsque vous commencez à travailler avec des objets en Java, vous trouvez que vous pouvez utiliser == et != comparer les objets entre eux. Par exemple, un bouton que vous voyez sur l'écran d'ordinateur est un objet. Vous pouvez demander si la chose qui a été tout simplement la souris est cliqué sur un bouton particulier sur votre écran. Vous faites cela avec l'opérateur d'égalité de Java.

si (e.getSource () == bcopy) {clipboard.setText (which.getText ()) -

La grande chasse aux sorcières avec le système de comparaison de Java vient quand vous comparez deux chaînes. Lorsque vous comparez deux chaînes avec un autre, vous ne voulez pas utiliser le double signe égal. Utilisation de la double signe égal demanderait, “ Est-ce chaîne stockée dans exactement au même endroit dans la mémoire comme cet autre chaîne n ° 148?; Habituellement, ce ne est pas ce que vous voulez poser.

Au lieu de cela, vous souhaitez généralement de demander, “ t cette chaîne ont les mêmes personnages dans ce que cet autre chaîne n ° 148?; Pour poser la deuxième question (la question la plus appropriée) de Java Chaîne type a une méthode nommée égaux. (Comme tout le reste de l'univers connu, cette égal à égal méthode est définie dans l'API Java, court pour l'interface de programmation d'application).

La égal à égal méthode compare deux chaînes pour voir si elles ont les mêmes personnages en eux. Pour un exemple de l'utilisation de Java égal à égal méthode, voir cette liste de code. (La figure montre une course du programme dans la liste.)




importation java.lang.System statique * -. importation java.util.Scanner-classe publique CheckPassword {static void main (String args []) {publics de out.print ("Quel est le mot de passe?") -Scanner clavier = new Scanner (de in) -string password = keyboard.next () - out.println ("Vous avez tapé >>" + mot de passe + "lt; lt;") - out.println () - si (mot de passe == "espadon") {sur .println ("Le mot que vous avez saisi est stocké") - out.println ("dans le même endroit que le réel") - out.println (". mot de passe Vous doit être un") - out.println ("hacker". ) -} else {out.println ("Le mot que vous avez saisi ne sont pas") - out.println ("stocké dans le même endroit que") - out.println ("le mot de passe réel, mais qui est") - out.println ("pas une grosse affaire.") -} out.println () - if (password.equals ("espadon")) {out.println ("Le mot que vous avez saisi a") - out.println ("mêmes caractères que le réel ") - out.println (" mot de passe Vous pouvez utiliser notre. ") - out.println (" système précieux ") -} else {out.println (". Le mot que vous avez saisi ne ") - out. println ("avoir les mêmes caractères que") - out.println ("le vrai mot de passe Vous ne pouvez pas.") - out.println ("utiliser notre précieux système.") -} keyboard.close () -}}

Dans la liste, l'appel keyboard.next () gagner peu importe le mot les types d'utilisateur sur le clavier de l'ordinateur. Le code pousse ce mot dans le nom de variable mot de passe. Ensuite, le programme de si états utilisent deux techniques différentes pour comparer mot de passe avec “ l'espadon ”.

Les résultats de l'utilisation == et l'utilisation de Java's equals method.
Les résultats de l'utilisation == et l'utilisation de Java de la méthode Equals.

Les exemples dans le livre imprimé sont la plupart du temps basé sur le texte, mais vous pouvez trouver des versions fantaisistes de la plupart des exemples sur le site nuls. Ces versions fantaisistes ont des fenêtres, des boutons, des champs de texte et d'autres éléments d'un typique l'interface utilisateur graphique (GUI).

Le plus approprié des deux techniques utilise Java de égal à égal Procédé. La égal à égal méthode semble 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 cela est la façon dont vous avez à faire.

En appelant de Java égal à égal méthode, il n'a pas d'importance quelle chaîne obtient le point et qui obtient les parenthèses. Par exemple, dans la liste, vous auriez pu écrire

si (.equals "d'espadon" (mot de passe)) 

La méthode pourrait fonctionner tout aussi bien.

Un appel à Java de égal à égal méthode semble déséquilibrée, mais il est pas. Il ya une raison derrière le déséquilibre apparent entre la dot et les parenthèses. L'idée est que vous avez deux objets: la mot de passe objet et le “ l'espadon ” objet.

Chacun de ces deux objets est de type Chaîne. (Toutefois, mot de passe est une variable de type Chaîne, et “ l'espadon ” est un Chaîne littéral.) Lorsque vous écrivez password.equals («espadon»), vous appelez un égal à égal méthode qui appartient à l'objet de mot de passe. Lorsque vous appelez cette méthode, vous nourrissez “ l'espadon ” Procédé pour le paramètre de la méthode (jeu de mots).

Lorsque l'on compare les chaînes avec un autre, utiliser le égal à égal méthode - pas le double signe égal.


» » » » Comparaison d'objets en java