2.4.49 Ist der folgende Quelltext korrekt oder erzeugt er einen Compilerfehler? Berücksichtigen Sie bei der Beurteilung die Antwort der vorhergehenden Frage und erläutern Sie die Lösung.

String abc = "abc";
abc = abc+ "def";

Der Quelltext ist korrekt,  er ist kompilierbar und funktioniert auch. Das ist zunächst etwas verwunderlich, denn in der vorhergehenden Antwort wurde ja festgestellt, dass der Text eines String-Objekts unveränderbar ist. Hier wird in der zweiten Zeile aber genau das gemacht: Der im Objekt abc abgelegte Text wird um drei weitere Zeichen ergänzt.

Erlaubt ist diese Konstruktion, weil intern gar nicht der vorhandene Text erweitert, sondern ein neues String-Objekt angelegt wird. Der Inhalt dieses Objekts ist der neu zusammengebaute Text. Dadurch das der bestehende Name einem neuen Objekt sozusagen "zugeordnet" wird, geht das alte Objekt an dieser Stelle verloren. Der „Garbage Collector“ wird es bei der nächsten Gelegenheit zerstören.