Bonjour, c'est Kechon. ** Êtes-vous en train d'écrire Java? ** ** Je n'ai pas codé ces derniers mois. J'ai commencé à étudier l'or de Java à la hâte (à partir d'aujourd'hui) Je voudrais le présenter car je me sentais mal à l'aise à ce moment-là.
Comment comparez-vous des chaînes lorsque vous les comparez?
String str1 = "test";
String str2 = "test";
if (str1 == str2) {
System.out.print("same");
} else {
System.out.print("diff");
}
Oui, ce n'est pas bon. Je me fâche si j'écris ce code. Oui. L'opérateur "==" compare les adresses mémoire des objets.
Différents objets ont fondamentalement des adresses mémoire différentes. Cette fois, je veux comparer la chaîne de caractères de l'objet, ce qui est contre mon intention.
**, mais dans ce cas "même" est affiché. ** ** Soyez prudent car la chaîne elle-même est désagréable. Ce n'est pas le sujet principal et je ne le connais pas en détail, je vais donc l'omettre.
String str1 = "1";
String str2 = "1";
if (str1.equals(str2)) {
System.out.print("same");
} else {
System.out.print("diff");
}
C'est normal. Je le vois souvent. Mais avez-vous déjà vu le contenu d'Object.equals?
Le contenu est ...
public boolean equals(Object obj) {
return (this == obj);
}
** "==" Utilisez-le!
J'étais en colère quand j'étais en colère contre "==".
La comparaison des chaînes de caractères est la même pour les égaux et "==" ????
** Bien sûr que non. ** **
La méthode equals est remplacée par la classe String. Vous trouverez ci-dessous le contenu de String.equals.
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String aString = (String)anObject;
if (coder() == aString.coder()) {
return isLatin1() ? StringLatin1.equals(value, aString.value)
: StringUTF16.equals(value, aString.value);
}
}
return false;
}
Cela utilise également "==", mais si l'adresse mémoire est différente, vous effectuez une autre comparaison.
Object.equals est juste une comparaison avec "==" String.equals est comparé à "==", mais si la cible de comparaison est une chaîne de caractères, elle se comporte spécialement (c'est le mouvement attendu)
Recommended Posts