Heim >Java >javaLernprogramm >Warum ändert die Neuzuweisung einer String-Variablen in Java nicht den Wert des ursprünglichen Strings?
String ist unveränderlich: Das Konzept verstehen
In Java sind Strings unveränderlich, was bedeutet, dass ihr Inhalt nicht direkt geändert werden kann. Dieses Konzept kann jedoch verwirrend sein, wenn wir Code beobachten wie:
String a = "a"; System.out.println("a 1-->" + a); a = "ty"; System.out.println("a 2-->" + a);
Ausgabe:
a 1-->a a 2-->ty
Was passiert eigentlich?
Trotzdem Wenn Sie a einen neuen Wert zuweisen, zeigt die Ausgabe den ursprünglichen Wert. Dieser scheinbare Widerspruch ergibt sich aus der Unveränderlichkeit von Strings. Wenn einer Referenzvariablen eine neue Zeichenfolge zugewiesen wird, wird ein neues Zeichenfolgenobjekt erstellt und die Referenz aktualisiert, um auf das neue Objekt zu verweisen. Der ursprüngliche String bleibt unverändert.
Wie Strings funktionieren
Um dies besser zu verstehen, erkunden wir die Funktionalität der String-Klasse:
Speicherverwaltung und der String-Konstanten-Pool
String-Literale sind in Anwendungen häufig und können viel Speicher belegen. Um die Speichernutzung zu optimieren, verwaltet die Java Virtual Machine (JVM) einen „String-Konstanten-Pool“, der alle String-Literale speichert. Wenn ein Zeichenfolgenliteral gefunden wird, überprüft der Compiler den Pool auf eine vorhandene Übereinstimmung. Wenn der Verweis gefunden wird, wird er auf die vorhandene Zeichenfolge verwiesen, wodurch die Erstellung eines neuen Objekts vermieden wird.
Die Bedeutung der Unveränderlichkeit
Die Unveränderlichkeit von Zeichenfolgen spielt eine entscheidende Rolle im Gedächtnis Management. Da Verweise auf Zeichenfolgen auf dasselbe zugrunde liegende Objekt verweisen können, würde sich eine Änderung des Inhalts eines Strings auf alle Verweise auswirken. Daher stellt die Unveränderlichkeit sicher, dass die ursprüngliche Zeichenfolge erhalten bleibt, auch wenn ihre Referenz geändert wird.
Finalität der String-Klasse
Um Überschreibungen zu verhindern, die die Unveränderlichkeit der Zeichenfolge beeinträchtigen könnten, wird die Die String-Klasse ist als final markiert. Dies bedeutet, dass keine andere Klasse ihr Verhalten erben und ändern kann.
Zusammenfassung
Strings sind in Java unveränderlich. Wenn eine Referenzvariable, die auf ein String-Objekt zeigt, neu zugewiesen wird, wird ein neues String-Objekt erstellt, wodurch die Referenz effektiv aktualisiert wird, anstatt das vorhandene Objekt zu ändern. Unveränderlichkeit ist für die Speichereffizienz und die Gewährleistung der Konsistenz zwischen Referenzen, die auf denselben Zeichenfolgenwert verweisen, von entscheidender Bedeutung.
Das obige ist der detaillierte Inhalt vonWarum ändert die Neuzuweisung einer String-Variablen in Java nicht den Wert des ursprünglichen Strings?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!