String umgedreht = letzter + erster;
Nein. Die Anweisung verwendet die Daten
in letzter
und in erster
um ein neues Objekt zu konstruieren.
Die bestehenden Objekte werden nicht geändert.
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 daraus zu erzeugen) und sie können untersucht werden. Aber sie können niemals geändert werden.
Alarm: Verwechslungsgefahr!! Das 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 Stringobjekt, auf das sie verweist, kann NICHT geändert werden.
Wir prüfen den folgenden Code:
String ring = "Einen Ring, sie alle zu knechten, "; String finden = "einen Ring, sie alle zu finden."; ring = ring + finden;
Verletzt die letzte Anweisung die Regel, dass Stringobjekte unveränderbar sind?