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