Rumah >Java >javaTutorial >Kolam Rentetan Java: Timbunan atau Tindanan—Di Mana Objek Rentetan Berada?

Kolam Rentetan Java: Timbunan atau Tindanan—Di Mana Objek Rentetan Berada?

DDD
DDDasal
2024-12-17 21:14:12894semak imbas

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

Kolam Rentetan Java: Peruntukan Tindanan lwn. Heap Storage

Pertimbangkan coretan kod:

String first = "abc"; 
String second = new String("abc");

Membuat segera objek String baharu dengan kata kunci baharu mencipta objek String yang berbeza pada timbunan. Tidak seperti primitif lain, objek String tidak boleh diubah, bermakna ia tidak boleh diubah suai selepas pemulaan.

Walau bagaimanapun, Java mengekalkan kolam String dalam timbunan, yang menyimpan sejumlah terhad String yang biasa digunakan. Apabila Rentetan literal (disertakan dalam petikan berganda) ditakrifkan, pengkompil menyemak kumpulan String untuk String sepadan sedia ada. Jika ditemui, String literal akan merujuk String sedia ada dalam kolam, memastikan kecekapan memori.

Dalam contoh ini, memandangkan "abc" ialah String literal, ia akan diletakkan dalam kolam String.

Sekarang, mari kita pertimbangkan objek String baharu yang dibuat dengan String("abc") baharu:

  • Objek String baharu ialah dicipta pada timbunan, bukan dalam kolam String.
  • Walaupun merupakan salinan "abc" literal, objek ini tidak akan disimpan dalam kolam String.

Oleh itu, kod kami menghasilkan satu String dalam kolam String ("abc"") dan satu String yang berbeza pada timbunan (yang dibuat dengan String("abc") baharu).

Atas ialah kandungan terperinci Kolam Rentetan Java: Timbunan atau Tindanan—Di Mana Objek Rentetan Berada?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn