Der Inhalt dieses Artikels ist eine Einführung in die Gründe für die Unveränderlichkeit von String. Ich hoffe, dass er für Freunde in Not hilfreich ist.
Im Interview bei Maoyan fragte der Interviewer, warum String-Strings unverändert seien. Meine damalige Antwort war, dass die String-Klasse mit dem Schlüsselwort final geändert wurde. Auf die Frage, warum sie unveränderlich sei, wenn sie mit dem Schlüsselwort final geändert wurde, stellte ich fest, dass das, was ich sagte, keinen Sinn ergab. Dann habe ich konkret nachgeschaut, warum.
Die Invarianz von String, wie in der folgenden Abbildung gezeigt, zeigt beim Ändern von s auf ein neues Objekt und das ursprüngliche Objekt ändert sich nicht.
Schauen Sie sich an, wie der Quellcode implementiert ist:
Wir sehen, dass String als final definiert ist, also String Es ist nicht vererbbar. Dann sehen wir, dass die interne Implementierung von String ein char-Array ist und als final definiert ist. Zu diesem Zeitpunkt denken einige Leute vielleicht, dass das endgültig geänderte Feld nach der Erstellung nicht mehr geändert werden kann, also ist es vorbei, aber das ist nicht der Fall.
Denn obwohl der Wert unveränderlich ist, ist nur die Referenzadresse des Werts unveränderlich. Das Array-Array, auf das es sich bezieht, ist jedoch veränderbar.
final int[] value={1,2,3}; value[2]=100; //这时候数组里已经是{1,2,100}
Der Grund, warum String unveränderlich ist, liegt im Grunde darin, dass die Sun-Ingenieure das Wertearray sehr gut gekapselt haben und das Wertearray nicht in allen Methoden ändern, es als privat definieren und den gesamten String-Satz erstellen Es ist endgültig, die Vererbung zu verbieten, um zu verhindern, dass es von anderen Personen, die es erben, zerstört wird. Der Schlüssel zur Unveränderlichkeit von String liegt also nicht in der Rolle des Finales.
Gleichzeitig haben Java-Autoren einen String-Konstantenpool
String one = "someString"; String two = "someString";
Java Video Tutorial auf der chinesischen PHP-Website!
Das obige ist der detaillierte Inhalt vonEinführung in die Gründe für die Unveränderlichkeit von String. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!