1. 程式人生 > >_069_Java_Java的String記憶體分析(2)

_069_Java_Java的String記憶體分析(2)

String類的記憶體分析:

        在Java之中有一種稱為共享設計模式的概念.在JVM的底層會存在有一個物件池,在物件池之中會保留有已經開闢空間的物件,那麼String就是利用了物件池的概念,當利用直接賦值的形式定義一個字串時,第一次會開闢新的堆記憶體空間,但是隨後會將此物件儲存在池之中,如果下次同樣使用直接賦值的形式,那麼會直接取出物件池中儲存的物件繼續使用,並且不會開闢新的記憶體空間. 

  1. String str1 = "Hello";

  2. String str2 = "Hello";

  3. String str3 = "Hello";

String類物件兩種例項化的區別? 1.構造方法:會產生兩塊記憶體空間。(其中一塊將成為垃圾,如果字串的值在常量池中已經存在,並且不會自動入池儲存; 2.直接賦值:只會產生一塊堆記憶體空間,可以自動入池儲存.

	String str = new String("Hello");

★ . 另外需要說明的是,當字串一旦宣告之後,那麼字串的內容是不可能被改變的.當我們使用字串連線符("+")進行操作時,改變的不是字串本身,只是對字串進行了重新組合生成新的字串,新的字串記憶體地址和原來的記憶體地址不同.改變的只是指向的記憶體地址.