22 Stimmen

Java/Android: String Vergleich s1==s2 geht nicht

Frage von Gast | Letztes Update am 18.04.2022 | Erstellt am 16.09.2013

Ich versuche mit dem Operator "==" in Java für Android zwei Strings/Zeichenketten miteinander zu vergleichen. Mein Code ist folgender:

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

if (s1 == s2) {
   // gleich?!
} else {
   // nicht gleich?!
}

Aus welchen Gründen auch immer liefert mir die Bedingung unabhängig davon, ob s1 und s2 gleich sind oder nicht, immer das Ergebnis "false".

Was mache ich hier falsch? In allen anderen Programmiersprachen, die ich kenne, funktioniert das doch genauso.

AntwortenPositivNegativ
2Beste Antwort2 Stimmen

In Java/Android ist ein String ein Objekt. Benutzen wir den Operator "==", wird geprüft, ob die beiden Objekte identisch sind und nicht ob deren Inhalt identisch ist. Da in deinem Beispiel die Objekte "s1" und "s2" nicht identisch sind, gibt die if-Bedingung daher stets "false" zurück.

Um den Inhalt zweier Strings zu vergleichen, kannst du die Methode .equals(Object obj) verwenden:

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

Im Beispiel habe ich noch zusätzlich den String s3 deklariert und diesen auf s1 gesetzt. In diesem Fall sind tatsächlich die Objekte s1 und s3 identisch und auch die Bedingung mit "==" würde in diesem Fall "true" liefern.
Letztes Update am 18.04.2022 | Erstellt am 16.09.2013

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Android Splash Screen Tutorial

Tutorial | 0 Kommentare

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.