Jeena Paradies: gleich und selbst

Beitrag lesen

Hallo,

Stimmt, hast recht. Gerade nochmals nachgeprüft. Wie komm ich bloß darauf?

Du kommst darauf weil das ein sehr seltener Fall ist dass man in Java zwei solche Strings wirklich auf diese Weise generiert und vergleicht. Das hier z.b. gibt schon false:

String a = "Ha";  
String c = a + "se";  
String b = "Hase";  
System.out.println(a == c);  

Es liegt daran wie die JVM String-Literale behandelt. Wenn sie zwei Literale findet wie eben diese "Hase" Strings dann werden diese so weit ich weiß sowieso am gleichen Speicherbereich abgelegt, d.h. beide variablen a und b zeigen in deinem Beispiel auf den gleichen Speicherbereich, obwohl Strings eigentlich Objekte sind. Diese Literale sind aber ein Sonderfall und man sollte in Java immer die "Hase".equals("Hase") methode statt dem == Operator benutzen um konsistente Ergebnisse zu bekommen.

Das alles ist wirklich extrem von der Implementation der Sprache abhängig und man kann das nicht verallgemeinern.

Jeena