Heim >Java >javaLernprogramm >Java String Pool: Heap oder Stack – Wo befindet sich ein String-Objekt?

Java String Pool: Heap oder Stack – Wo befindet sich ein String-Objekt?

DDD
DDDOriginal
2024-12-17 21:14:12894Durchsuche

Java String Pool: Heap or Stack—Where Does a String Object Reside?

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:

  • Ein neues String-Objekt wird auf dem Heap erstellt, nicht im String-Pool.
  • Obwohl es sich um eine Kopie des Literals „abc“ handelt, wird dieses Objekt nicht im String-Pool gespeichert.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn