1.2. Strings
Strings in Java sind unveränderlich (immutable). Das bedeutet, sobald ein String-Objekt erstellt wurde, kann dessen Inhalt nicht mehr verändert werden. Jede Operation, die scheinbar einen String verändert, erzeugt tatsächlich ein neues String-Objekt.
Strings dürfen in Java nicht mit ==
oder !=
verglichen werden, da hierbei nur geprüft wird, ob beide Referenzen auf das gleiche Objekt zeigen. Um die inhaltliche Gleichheit zu prüfen, ist die Methode .equals()
zu verwenden:
String a = "Hallo";
String b = new String("Hallo");
// Nicht empfohlen:
if (a == b) { ... } // Vergleicht Referenzen, nicht Inhalte!
// Empfohlen:
if (a.equals(b)) { ... } // Vergleicht Inhalte!
String-Literale werden in Java automatisch in einem sogenannten String-Pool gespeichert. Dieser Pool sorgt dafür, dass identische String-Literale nur einmal im Speicher existieren. Dadurch verweisen mehrere Variablen, die dasselbe String-Literal verwenden, auf dasselbe Objekt im Speicher.
Die explizite Verwendung der Methode intern()
ist möglich, um dynamisch erzeugte Strings in diesen Pool aufzunehmen. Diese Methode ist allerdings nur in spezifischen Szenarien zur Speicheroptimierung relevant.