verzweifle ... oder zu doof den fehler zu finden

Acki

Grünschnabel
habe folgenden code:
Code:
while (token.hasMoreTokens()) {
 String x = token.nextToken().substring(0, match.length());
 System.out.println(x);
 if (x == match){
  liste += token.nextToken()+", ";
 }
}

var match ist eine beliebige zeichenkette, z.b. ab

nun soll er eben wenn die ersten beiden buchstaben eines tokens "ab" ist sie in den string liste mit einfügen.
aber er macht das net ... heisst "x == match" gibt vermutlich immer false zurück, warum?
 
Hallo!

Weil du mit x == match nur die referenzen vergleichst jedoch nicht die Inhalte...
versuchs mal mit x.equals(match).

Gruß Tom
 
String ist ein Objekt. Für jeden String wird ein neues Objekt angelegt. Also vergleichst du ob es sich um die gleichen Objekte, gleiche Refferenzen, handelt, wenn du mit "==" vergleichst.
Darum gibt es eben .equals.
Ich finde das etwas gewöhnungsbedürftig, besonders wenn man zum Beispiel mit Delphi angefangen hat :)

Aber man gewöhnt sich schnell dran
 
Zurück