String reversed = last + first;

Eine gute Antwort könnte sein:

Nein. Sie verwendet die Daten in last und in first um ein neues Objekt zu konstruieren. Die anderen Objekte werden nicht geändert.

Strings sind für immer

Java wurde konzipiert, nachdem Programmierer 15 Jahre Erfahrung mit objektorientierter Programmierung hatten. Eine der in diesen Jahren gelernten Lektionen war, dass es sicherer ist ein neues Objekt zu konstruieren als ein bestehendes zu modifizieren. (Der Grund dafür ist, dass das Programm an vielen Stellen auf das bestehende Objekt verweisen könnte und, dass es schwer ist sicher zu sein, dass sie alle mit der Änderung umgehen können.)

Objekte mancher Java Klassen können nach der Konstruktion nicht geändert werden. Die Klasse String ist eine davon.

Stringobjekte sind unveränderbar. Das bedeutet, dass sie nach der Konstruktion nicht mehr geändert werden können.

Manchmal werden unveränderbare Objekte auch write-once Objekte genannt. Sobald ein Stringobjekt konstruiert wurde, werden die Zeichen, die es enthält immer dieselben bleiben. Keine ihrer Methoden wird diese Zeichen ändern, und es gibt keine andere Möglichkeit sie zu ändern. Die Zeichen können für verschiedene Zwecke verwendet werden (so wie neue Stringobjekte erzeugen) und sie können untersucht werden. Aber sie können niemals geändert werden.

Alarm: Verwechslungsgefahr!! Dies ist die Stelle an der es wichtig ist zwischen Referenzvariablen und deren Objekten zu unterscheiden. Eine Referenzvariable, die auf einen String verweist, kann geändert werden (sie kann geändert werden um auf ein anderes Stringobjekt zu verweisen). Das String-Objekt, auf das sie verweist, kann NICHT geändert werden.

FRAGE 12:

Prüfen Sie den folgenden Code:

String ring = "One ring to rule them all, "
String find = "One ring to find them."

ring = ring + find;

Verletzt die letzte Anweisung die Regel, dass String-Objekte unveränderbar sind?