Java String Pool: Stack Allocation vs. Heap Storage
Bedenken Sie das Code-Snippet:
String first = "abc"; String second = new String("abc");
Instanziieren eines Ein neues String-Objekt mit dem Schlüsselwort new erstellt ein eindeutiges String-Objekt auf dem Heap. Im Gegensatz zu anderen Grundelementen sind String-Objekte unveränderlich, was bedeutet, dass sie nach der Initialisierung nicht geändert werden können.
Java unterhält jedoch einen String-Pool im Heap, der eine begrenzte Anzahl häufig verwendeter Strings speichert. Wenn ein Literal-String (in doppelte Anführungszeichen eingeschlossen) definiert wird, überprüft der Compiler den String-Pool auf einen vorhandenen passenden String. Wenn der Literal-String gefunden wird, verweist er auf den vorhandenen String im Pool und sorgt so für Speichereffizienz.
Da „abc“ in diesem Beispiel ein Literal-String ist, wird er im String-Pool platziert.
Betrachten wir nun das neue String-Objekt, das mit new String("abc") erstellt wurde:
Daher ergibt unser Code eins String im String-Pool ("abc"") und ein eindeutiger String auf dem Heap (der mit new erstellte). String("abc")).
Das obige ist der detaillierte Inhalt vonJava String Pool: Heap oder Stack – Wo befindet sich ein String-Objekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!