22 Voix

Java/Android: Comparaison de String s1==s2 ne fonctionne pas

Question de Invité | 16/04/2022 à 17:12

J'essaie de comparer deux chaînes (strings) les unes avec les autres à l'aide de l'opérateur "==" en Java pour Android. J'ai le code suivant:

String s1 = new String("abc");
String s2 = new String("abc");

if (s1 == s2) {
   // même?!
} else {
   // inégal?!
}

Je ne sais pas pourquoi, mais cette condition retourne toujours "false" indépendante de si s1 et s2 sont égaux ou non.

Quelle est mon erreur ici? Dans toutes les autres langages de programmation, je connais, cela fonctionne exactement comme ça.

RépondrePositifNégatif
2Meilleure Réponse2 Voix

En Java/Android, une String est un objet. Lorsque vous utilisez l'opérateur "==", Java vérifie si les deux objets sont identiques et non si leur contenu est identique. Parce que dans votre exemple, les objets "s1" et "s2" ne sont pas identiques, de sorte que la condition IF retourne toujours "false".

Afin de comparer le contenu de deux chaînes, vous pouvez utiliser la méthode .equals(Object obj) pour votre comparaison:

String s1 = new String("abc");
String s2 = new String("abc");
String s3 = s1;
 
if (s1.equals(s2)) { }  // true
if (s1 == s2) { }       // false 
if (s1 == s3) { }       // true

De plus, dans cet exemple, j'ai déclaré la String s3 et la définir sur s1. Dans ce cas, en fait, les objets s1 et s3 sont identiques de manière à ce que la condition de "==" soit "true" ici.
16/04/2022 à 22:08

RépondrePositif Négatif
Répondre

Sujets Connexes

Avis Important

Veuillez noter: Les contributions publiées sur askingbox.com sont des contributions d’utilisateurs et ne doivent pas remplacer les conseils d’un professionnel. Ils ne sont pas vérifiés par des indépendants et ne reflètent pas nécessairement l’opinion de askingbox.com. Apprendre encore plus.

Participer

Posez votre propre question ou écrivez votre propre article sur askingbox.com. Voici comment.