1. 程式人生 > >Java中的String、StringPool(字串常量池)

Java中的String、StringPool(字串常量池)

字串常量池與簡單語法

String s  = "hahahah";
String s2 = "hahahah";
1->在字串常量池中檢視是否存在內容與"hahahah"相同的字串物件;
2->若沒有,則新建立一個包含該內容的字串物件,並讓引用變數指向該物件。例如,建立字串s的時候,字串常量池中沒有,則建立一個新物件,並讓s指向該物件;
3->若已存在包含該內容的字串物件,則讓字串引用直接指向該物件。例如,建立s2時。
因為s和s2指向同一個物件,所以s==s2。

字串常量池與new語法

String s = new String("ssss");
1->直接在堆中建立一個包含指定內容的字串物件,並將字串引用指向該物件;
2->在字串常量池中檢視,是否有包含該內容的物件;
3->若字串常量池中存在此物件,便將new出來的物件與字串常量池中內容相同的物件聯絡起來。
4->若沒有,則在字串常量池中再建立一個包含該內容的字串物件,並將堆中的物件與字串常量池中的物件聯絡起來。

public String intern()

此方法將指定字串物件在字串常量池中對應物件的引用返回。若本身就在字串常量池中,則直接將自己的引用返回,若在堆中,則返回字串常量池中其聯絡物件的引用。