String類和常量池

2021-09-22 21:23:16 字數 988 閱讀 9207

string物件的兩種建立方式

string str1 = 「abcd」; //先檢查字串常量池中有沒有"abcd",如果字串常量池中沒有,則建立乙個,然後 str1 指向字串常量池中的物件,如果有,則直接將 str1 指向"abcd"";

string str2 = new string(「abcd」); //堆中建立乙個新的物件

string 型別的常量池比較特殊。它的主要使用方法有兩種:

直接使用雙引號宣告出來的 string 物件會直接儲存在常量池中。

如果不是用雙引號宣告的 string 物件,可以使用 string 提供的 intern 方法。string.intern() 是乙個 native 方法,它的作用是:如果執行時常量池中已經包含乙個等於此 string 物件內容的字串,則返回常量池中該字串的引用;如果沒有,則在常量池中建立與此 string 內容相同的字串,並返回常量池中建立的字串的引用。

string s1 = new string(「計算機」);

string s2 = s1.intern();

string s3 = 「計算機」;

system.out.println(s2);//計算機

system.out.println(s1 == s2);//false,因為乙個是堆記憶體中的 string 物件乙個是常量池中的 string 物件,

system.out.println(s3 == s2);//true,因為兩個都是常量池中的 string 物件

盡量避免多個字串拼接,因為這樣會重新建立物件。如果需要改變字串的話,可以使用 stringbuilder 或者 stringbuffer。

string s1 = new string(「abc」);這句話建立了幾個字串物件?

將建立 1 或 2 個字串。如果池中已存在字串文字「abc」,則只會在堆中建立乙個字串「s1」。如果池中沒有字串文字「abc」,那麼它將首先在池中建立,然後在堆空間中建立,因此將建立總共 2 個字串物件。

String類和常量池

1.全域性字串常量池 string pool 全域性字串常量池中存放的內容是在類載入完成後存到string pool中的,在每個vm中只有乙份,存放的是字串常量的引用值 在堆中生成字串物件例項 2.class檔案常量池 class constant pool class常量池是在編譯的時候每個cla...

String 類和常量池

1 string 物件的兩種建立方式 string str1 abcd 先檢查字串常量池中有沒有 abcd 如果字串常量池中沒有,則建立乙個,然後 str1 指向字串常量池中的物件,如果有,則直接將 str1 指向 abcd string str2 new string abcd 堆中建立乙個新的物...

String類和常量池

1 string物件建立物件的兩種方法 string str1 health 常量池中建立 strinng str2 new string health 堆中建立 system.out.println str1 str2 false2 string型別的常量池比較特殊 string a aaa 在常...