JVM字串常量池

2021-10-09 19:10:15 字數 1641 閱讀 4202

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...