Java beim "if-else" Befehl strings vergleichen?

...komplette Frage anzeigen

5 Antworten

Mit "==" werden bei Strings nur die Speicheradressen vergleicht, hast du also ein Programm wie das folgende, so solltest du es nice verwenden:

String s1 = "12345";
String s2 = "12345";

if(s1 == s2){    //false
...
}

Auch wenn der Inhalt der beiden String-Objekte identisch ist, sind die Speicheradressen nicht gleich.

Du solltest stattdessen die von Object vererbte (und überschriebene) Methode

String equals(String anotherString)

verwenden.

Somit wäre das eben gezeigte Programm funktionstüchtig:

String s1 = "12345";
String s2 = "12345";

if(s1.equals(s2)){    //true
...
}

Der Vergleichsoperator "==" sollte allgemein mir bei expliziten Vergleichen auf die Speicheradressen (Referenz), aber sonst bei keinen Referenztypen (String, Array, erc.) verwendet werden.

Ich hoffe, ich konnte dir helfen; wenn du noch Fragen hast, kommentiere einfach.

LG Wi

Antwort bewerten Vielen Dank für Deine Bewertung
SirNik 06.06.2016, 22:56

da du nicht explizit mit new ein neues String objekt erstellst, wird aus dem String-Pool das 12345 genommen und da würde == true ergeben, also in deinem Beispiel. Aber man sollte es so nicht machen, da das ja nicht immer der Fall ist ;)

0
Willibergi 06.06.2016, 23:49

Stimmt - das hatte ich nicht beachtet.

Aber trotzdem sollte bei gewollten Inhaltsvergleichen die dazu zuständige Methode equals(String) verwendet werden. ^^

LG Willibergi

0

Hallo :D

Da Strings Objekte sind, steht in den Variablen nur die Referenz, also eine Adresse, auf dieses Objekt. und mit == prüfst du die referenz.

D.h.:
Dein String bZed hat eine andere Referenzadresse, als dein String Ban1, somit ist hier eine ungleichheit.

Da du auf den Inhalt prüfen möchtest, musst du die Methode euqals() benutzen:
bZed.equals(Ban1);
Mit dieser Zeile wird auf den Inhalt geprüft 

Hoffe es hilft dir weiter :D

Antwort bewerten Vielen Dank für Deine Bewertung

In Java solltest du Strings nie mit == vergleichen sondern mit a.equals(b). Und achte darauf, ob einer der beiden null sein kann.

Antwort bewerten Vielen Dank für Deine Bewertung
triopasi 06.06.2016, 22:25

Zumindest in Java, in anderen Programmiersprachen schaut's anderst aus ;)

0
oelbart 06.06.2016, 22:59
@triopasi

Die Frage bezieht sich auf Java und in der Antwort steht ebenfalls, dass das für Java gilt.

Aber ja, in brainfuck ist es eventuell anders ;)

1

String ist ein Object, also musst du auch die Vergleiche eines Objektes anwenden.

also if(Ban1.eguals(bZed))

Und denk drann, Variablen immer klein schreiben. Wenn du ne kleine Webseite schreiben willst, wäre PHP wahrschienlich die besser variante

Antwort bewerten Vielen Dank für Deine Bewertung

Strings kann man nicht per == vergleichen.  Zum Vergleichen von Strings brauchst du die equals() Methode.  du musst also if(variableString.equals("blablabla")){dann ....} schreiben

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?