jdk1 7後字串的總結

2022-09-07 19:39:06 字數 565 閱讀 9629

public class interndifference

}string.intern()方法是一種手動將字串加入常量池中的方法,原理如下:如果在常量池中存在與呼叫intern()方法的字串等值的字串,就直接返回常量池中相應字串的引用,否則在常量池中複製乙份該字串,並將其引用返回(jdk7中會直接在常量池中儲存當前字串的引用);jdk6 中常量池位於premgen區,大小受限,不建議使用string.intern()方法,不過jdk7 將常量池移到了j**a堆區,大小可控,可以重新考慮使用string.intern()方法,但是由對比測試可知,使用該方法的耗時不容忽視,所以需要慎重考慮該方法的使用;string.intern()方法主要適用於程式中需要儲存有限個會被反覆使用的值的場景,這樣可以減少記憶體消耗,同時在進行比較操作時減少時耗,提高程式效能。

另外 string s3 = str1 + str2;  //因為str1 ,str2為字串物件,所以會用strinfbuffer,會new物件,所以是在堆上建立物件

string s3 = 「123」 + 「345」;  //字串常量相加,會在字串常量池找,有則返回沒有則在字串常量池建立

JDK1 7之下的inern用法

jdk1.7之下的inern用法 string s new string 1aaa s.intern string s2 1aaa system.out println s2 s.intern true system.out println s s.intern falsestring s new ...

JDK1 7的HashMap死迴圈

為什麼在jdk1.7多執行緒情況下會很容易出現hashmap死迴圈,這個還是要根據它採取的擴容策略來看,它的擴容策略是頭插法,因此會導致這樣的問題。在jdk1.8改進為尾插法,但並不意味著尾插法能適應多執行緒併發的場景,我認為其最主要的考慮就是頭插法在正常情況下是與原來鍊錶順序相逆的,而尾插不會改變...

JDK1 7和JDK1 8HashMap的區別

jdk1.7與jdk1.8中hashmap區別 最重要的一點是底層結構不一樣,1.7是陣列 鍊錶,1.8則是陣列 鍊錶 紅黑樹結構 jdk1.7中當雜湊表為空時,會先呼叫inflatetable 初始化乙個陣列 而1.8則是直接呼叫resize 擴容 插入鍵值對的put方法的區別,1.8中會將節點插...