Wie Bzabhi sagte, sind Strings in Java unveränderlich. Dies bedeutet, dass sich ein String-Objekt niemals ändert. Dies bedeutet nicht, dass Sie String-Variablen nicht ändern können, nur dass Sie die zugrunde liegende Speicherdarstellung der Zeichenfolge nicht ändern können. für ein Beispiel:
String str = "Hello";
str += " World!";
Nach der Ausführung dieser Zeilen zeigt str auf eine neue Zeichenfolge im Speicher. Die ursprüngliche Zeichenfolge "Hello" ist immer noch im Speicher vorhanden, wird aber höchstwahrscheinlich nicht lange verfügbar sein. Unter der Annahme, dass es keine mildernden Umstände gibt, wird nichts auf die ursprüngliche Zeichenkette zeigen, so dass es Müll gesammelt wird.
Ich denke, der beste Weg, um dies zu setzen wäre zu sagen, dass wenn Zeile 2 des Beispiels ausgeführt wird, eine neue Zeichenfolge im Speicher aus der Verkettung der ursprünglichen Zeichenfolge und der Zeichenfolge hinzugefügt wird. Die Variable str, die nur eine Referenz auf einen Speicherort ist, wird dann so geändert, dass sie auf die neue Variable zeigt, die gerade erstellt wurde.
Ich bin nicht besonders sachkundig in dem Punkt, aber, wie ich es verstehe, das ist, was mit allen "nicht-primitiven" Werten passiert. Alles, was zu einem bestimmten Zeitpunkt von Object abgeleitet wird, folgt diesen Regeln. Primitive Werte wie Ints, Bool, Chars, Floats und Doubles erlauben die Änderung des aktuellen Wertes im Speicher. Also, von diesem:
int num = 5;
num += 2;
der tatsächliche Wert im Speicher ändert sich. Anstatt ein neues Objekt zu erstellen und die Referenz zu ändern, ändert dieses Codebeispiel einfach den Wert im Speicher für die Variable num.
Warum das so ist, ist nur eine Designentscheidung der Hersteller von Java. Ich bin mir sicher, dass jemand kommentieren wird, warum das gemacht wurde, aber das weiß ich nicht.
Was meinst du, kann nicht ändern? Wie wäre es, wenn Sie uns ein Beispiel dafür geben, was Sie beschreiben? – user151841
Willkommen bei SO. Ich denke, Sie müssen etwas beschreibender sein, um eine konstruktive Antwort zu erhalten. :) –
ich verstehe nicht, warum diese Jungs einen Downvote bekommen. Er ist ein Neuling und stellt einfach eine Frage. Indem Sie nach unten stimmen, entmutigen Sie ihn. und ich kann nicht sehen, was mit der Frage falsch ist, es ist eine gültige! –