您當前的位置:首頁 > 遊戲

Java快取池的原理

作者:由 程七 發表于 遊戲時間:2022-10-16

Java快取池的原理

String。intern原理

在java7之後,呼叫string。intern會判斷字串物件是否存在於快取池,如果存在直接返回快取池結果, 如果不存在,則會將當前堆中物件的引用存放在快取池中,在返回其引用地址。

String宣告的集中方式

1 new String();

String a = new String(“1”);

每次都會new一個新的物件存放在堆中。因此他們是獨立的,也就是說,同時new兩個相同值的字串物件,他們本質上地址是不相同的,只是字面值相同。

String s = new String(“1”);

String s1 = new String(“1”);

System。out。println(s == s1); // false

System。out。println(s。equals(s1)); //true

2 使用字串直接宣告

String b = “1”;

每次宣告,JVM會先從字串快取池中查詢是否有“1”的引用地址,如果有,則直接返回此地址,如果沒有則將宣告一個字串常量並將其放入字串快取池中。

String s = “1”;

String s1 = “1”;

System。out。println(s == s1); // true

System。out。println(s。equals(s1)); // true

3 使用String。intern()

在建立一個String物件之後,透過呼叫String。intern可以將其引用存放在字串快取池中

String a = new String(“1”)。intern();

String b = “1”;

System。out。println(a == b); // true

深入解析String#intern

標簽: String  NEW  快取  intern  S1