03.05 Immutability von Strings
In den letzten Kapiteln haben Sie einige Methoden der String
-Klasse kennengelernt. Ihnen ist dabei evtl. aufgefallen, dass keine Methode den String
verändert, sondern lediglich einen veränderten String
zurückliefert. Das liegt daran, dass Strings
immutable und somit unveränderbar sind.
Egal wie Sie einen String
„verändern“, es wird immer ein neuer String
zurückgeliefert. Das sieht man schon an Methoden wie replace
oder substring
. Dort wird zwar ein manipulierter String
erstellt, aber der Ursprungs-String
nicht überschrieben sondern ein neuer angelegt. Der alte String
existiert unverändert weiter.
String str = "Hallo,_das_ist_ein_Test"; System.out.println(str.replace('_', ' ')); System.out.println(str);
Um den alten String
zu überschreiben (auch hier wird natürlich ein neuer String
erstellt) muss man den Rückgabewert der Variablen zuweisen.
String str = "Hallo,_das_ist_ein_Test"; str = str.replace('_', ' '); System.out.println(str);
Selbiges gilt selbstverständlich auch, wenn ein oder mehrere Strings
mit einem Plus aneinander gekettet werden.
String str = "Hallo"; String str2 = " "; String str3 = "Welt"; String hallowelt = str + str2 + str3;
str
, str2
und str3
bleiben unverändert. Aber hallowelt
wird ein neuer String
– bestehend aus str
, str2
und str3
– zugewiesen.