java.lang.String ist eine unveränderliche (immutable) Klasse in Java. Unveränderliche Objekte sind solche, deren Zustand nach ihrer Erstellung nicht geändert werden kann. In Java ist String ein Hauptbeispiel dafür, es gibt aber auch andere unveränderliche Klassen wie java.lang.Integer oder java.lang.Double.
Mit ihrer Unveränderlichkeit können Strings sicher in mehreren Threads verwendet werden, da sie thread-safe, also threadsicher sind. Sobald ein String-Objekt erstellt wurde, kann sein Wert nicht geändert werden. Wenn Sie versuchen, den Wert eines vorhandenen String-Objekts zu ändern, wird statt dessen ein neues Objekt erstellt.
Zum Beispiel:
String s1 = "Hallo";
s1 = s1 + " Welt!";
In diesem Fall wurde nicht der ursprüngliche String "Hallo"
verändert, sondern ein neuer String "Hallo Welt!"
erstellt und der Variablen s1
zugewiesen. Der ursprüngliche String bleibt unverändert.
Dies steht im Gegensatz zu veränderbaren Klassen wie StringBuilder und StringBuffer sowie ArrayList, die ihren Zustand ändern können.
Es ist auch wichtig zu bedenken, dass die Unveränderlichkeit von Strings in Java Bedeutungen in Bezug auf Leistung und Sicherheit hat. Da Strings nicht geändert werden können, werden sie in einem speziellen Bereich des Java-Heap-Speichers namens String-Konstanten-Pool gespeichert. Dadurch kann Java Speicher effizienter nutzen.
Außerdem, da der Inhalt eines String-Objekts nicht geändert werden kann, können Sie String-Objekte sicher an andere Methoden übergeben, ohne sich Sorgen machen zu müssen, dass der Wert verändert wird.
Insgesamt ist die Unveränderlichkeit des String eine zentrale Eigenschaft in Java, die sowohl Auswirkungen auf Leistung und Speicherverwaltung hat, als auch das Recht, bestimmte Operationen wie das Hinzufügen oder Entfernen von Elementen sicherer zu machen.