stringtable
intern()
建立了幾個物件?
string s =
newstring
("abc"
);
2個。乙個在堆中,乙個在字串常量池中。
string s1 =
newstring
("abc");
string s2 =
newstring
("abc"
);
3個。字串常量池只會儲存乙份內容相同的字串。兩個在堆中,乙個在字串常量池中。
string s =
"abc"
;
1個。在字串常量池中。
string str1 =
newstring
("a"
+"b"
);
4個。字串常量池3個(「a」,「b」,「ab」),堆1個(new string(「a」+「b」)),
判斷輸出
string str1 =
"ab"
;string str2 =
"a";
string str3 =
"b";
string str4 =
"a"+
"b";
string str5 = str2 + str3;
system.out.
println
(str1 == str4)
;//true
system.out.
println
(str1 == str5)
;// false
第4行只是字串的拼接。
string str1 =
"a";
string str2 =
"b";
string str3 =
"ab"
;string str4 = str1 + str2;
string str5 =
newstring
("ab");
system.out.
println
(str5.
equals
(str3));
//true
system.out.
println
(str5 == str3)
;//false
system.out.
println
(str5.
intern()
== str3)
;//true
system.out.
println
(str5.
intern()
== str4)
;//false
jvm字串常量池的理解
先看乙個例子stringdemo2 public class stringdemo2 執行結果 false true 詳解 1.首先,通過main 方法進棧。2.然後再棧中定義乙個物件s1,去堆中開闢乙個記憶體空間,將記憶體空間的引用賦值給s1,hello 是常量,然後去字串常量池 檢視是否有hel...
JVM 常量池 執行時常量池 字串常量池的理解
補充 答 常量池有class檔案的常量池 在檔案中 執行時常量池 記憶體中,由class檔案常量池得來 字串常量池是大的全域性字串快取池,公用。問 是的,那我這裡有點疑惑,就是這個helloword在編譯期的時候,是存於class的常量池中的,在class被載入後,存於記憶體中的執行時常量池,那麼,...
字串常量池
string的不可變性。字串常量池是不會儲存相同內容的字串。xx stringtablesize設定stringtable的長度。jdk8最小值為1009 string的string pool是固定大小的hashtable 字串常量池在堆中。字串拼接操作 和 equals equals 對於obje...