0 0 Stimmen

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

Frage von Gast | 16.09.2013 um 06:31 Uhr

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

Stefan Trost

Profil anzeigen | Nachricht
Avatar
2Beste Antwort
2 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.
16.09.2013 um 11:29 Uhr

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

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.