String字串常量池

2021-10-06 23:57:16 字數 512 閱讀 6570

首先看一段這樣的**

string str1 =

"abc"

; string str2 =

"abc"

; string str3 =

newstring

("abc");

system.out.

println

(str1 == str2)

; system.out.

println

(str2 == str3)

;

返回的結果為 true和false,和想象中的或許有些不一樣是吧。

首先,str1在方法區中的常量池中沒有找到字串abc,所以在常量池中建立乙個字串常量,str2在常量池中找到字串常量,返回乙個引用,所以輸出的為true,str3在常量池中找到abc,返回乙個引用例項,並在堆中建立乙個物件,所以str3建立了乙個新的物件,如果把str3放在第一行會在常量池和堆中分別建立乙個物件,

字串常量池

string的不可變性。字串常量池是不會儲存相同內容的字串。xx stringtablesize設定stringtable的長度。jdk8最小值為1009 string的string pool是固定大小的hashtable 字串常量池在堆中。字串拼接操作 和 equals equals 對於obje...

字串常量池

string a hello string b hello string aa new string aa string bb new string bb 字串常量池在方法區中 其中 變數a jvm先到字串常量池中尋找如果沒有就在字串常量池中建立乙個字串hello,並且將該字串常量池的hello的記...

JAVA 字串常量池

system.out.println s s1 string 類 equals 重寫 比較的內容 system.out.println s.equals s1 字串是常量,它們的值在建立之後不能更改 一旦修改字串儲存的資料 自動建立乙個的物件內部儲存是修改的資料 string s2 abc new ...