常量池隨筆

2022-07-27 23:09:19 字數 705 閱讀 8557

常量池儲存了類, 介面, 方法等的常量資料, 也儲存了string常量.

如下**中a1, a2不是string常量(在編譯期即被確定), a3則是, a1.intern()也可以獲得string常量(是在執行時被裝載的常量).

string a1 = new string("a"), a2 = new string("a"), string a3 = "a";

system.out.println(a1

==a2); //false

system.out.println(a1.intern()

==a3); //true

string b1 = "bb", b2 = "bb", b3 = "b"+"b";

system.out.println(b1

== b2); //true

system.out.println(b1

== b3); //true

返回結果 (a1 == a2) = false, (a1.intern() == a3) = true

為什麼呢? 原來a1, a2是不同的物件並且被存放在堆中, a1.intern()則返回相應值的string常量.

(b1 == b2) = true, (b1 == b3) = true.

而b1, b2則儲存在常量池中, b3是由兩個string常量連線而成 其結果就是常量"bb".

快取常量池

亞信面試題 先說結論 integer a 127 integer b 127 integer c 128 integer d 128 a b true c d false integer a new integer 127 integer b new integer 127 integer c ne...

關於常量池

這裡暫且把integer作為包裝類的代表來說明.我們知道每次new都是建立乙個新的物件,由於 比較的是記憶體位址,所以下面的 不會為true string s1 new string 1 string s2 new string 1 system.out.println s1 s2 false但是下...

測試常量池

那天學些了常量池的一些特性,寫了一些 來驗證理論.1 public class testconstantspool 56 static void stringpool 1920 128 127以內的integer值 21static void integerpool 3132 33 128 127以...