Les chaînes ne semblent pas être égale à Java sur Android, même si ils ont la même impression
J'ai un problème que je suis plutôt confus. J'ai les lignes de code suivantes dans mon application android:
System.out.println(CurrentNode.getNodeName().toString());
if (CurrentNode.getNodeName().toString() == "start") {
System.out.println("Yes it does!");
} else {
System.out.println("No it doesnt");
}
Quand je regarde la sortie de la première println déclaration, il apparaît dans le LogCat "start" (sans les guillemets évidemment). Mais ensuite, quand les si l'exécution d'une instruction, il passe à l'instruction else et d'estampes "Non, ce n'est pas".
Je me demandais si le nom du nœud peut avoir une sorte de non-impression de caractère, j'ai donc vérifié la longueur de la chaîne venant de getNodeName() et il est de 5 caractères, comme vous le souhaitez.
Quiconque a une idée de ce qui se passe ici?
OriginalL'auteur robintw | 2010-04-24
Vous devez vous connecter pour publier un commentaire.
Utilisation de la Chaîne de est égal à méthode pour comparer des Chaînes de caractères. Le
==
opérateur il suffit de comparer les références de l'objet.CurrentNode.getNodeName().toString().equals("start") == "start".equals(CurrentNode.getNodeName().toString()
?Je m'attends à
true
, mais vous pouvez le tester pour le savoir.yup. Désolé d'être trop paresseux.
OriginalL'auteur Bill the Lizard
Utilisation
CurrentNode.getNodeName().toString().equals("start")
.En Java, l'une des erreurs les plus courantes que les nouveaux arrivants à relever est l'aide de
==
pour comparer des Chaînes de caractères. Vous devez vous rappeler,==
compare l'objet identité (Pensez à des adresses de mémoire), pas le contenu.OriginalL'auteur Xavier Ho
Vous devez utiliser .est égal à
OriginalL'auteur NG.