Was ergibt trim() auf einen leeren String

E00358

Mitglied
Hallo,

ich bin auf ein Problem gestoßen, das ich mit meinen noch geringen Kenntnissen nicht verstehe:

String Teststring = " ";
Teststring = Teststring.trim();

Die Länge von Teststring ist dann 0 und der String ist leer was man überprüfen kann mit

if(Teststring.length() > 0) {
tue etwas
}
und
if((Teststring.equals("") {
tue etwas
}

die Abfrage
if(Teststring =="")
ergibt aber ein "false".
Wo ist mein Gedankenfehler?
Vielen Dank für eine Anwort.
Michael
 
Dein Fehler ist, dass du nicht siehst, dass == und equals() zwei verschiedene Kriterien prüfen. equals gibt true zurück, wenn zwei Strings gleich sind, also die selben Zeichen in der selben Reihenfolge enthalten.
== prüft auf Referenzgleichheit, also ob zwei Variablen (Referenzen) auf das selbe Objekt im Speicher haben.

Java hat intern einen Pool von Strings, die gespeichert werden, so dass das erzeugen von Strings, die es im Pool gibt, nur die Referenz aus dem Pool zurückgibt. Das ist aber niemals garantiert!
 
Strings vergleicht man nicht mit == so einfach ist es.

== vergleicht die Objekte und das sind verschiedene. Vergleichen von Strings mit .equals
 
Vielen Dank für die Antworten.
Habe ein Brett vor dem Kopf gehabt und immer in andere Richtungen gesucht. Nur weil es in Java geht muss es nicht das tun was ich erwarte.
 

Zurück
Oben