jdk每次公升級都會做很多優化,我們使用最多的string常量類也在不斷被優化。這次和大家分享的是jdk1.8中對string的優化之一,intern()方法的使用。
對應的方法及注釋如下:
一句話概括,就是通過常量池復用來節省記憶體空間、減少開銷以提公升效能。
tips:
這裡簡單介紹一下常量池,方便下文理解。先看看jvm的記憶體結構:
回到今天的主題,intern()方法。如果我們對著英文注釋一句一句翻譯,來理解它的話會很有限很苦澀,結合**示例理解會更好一些(個人經驗)。
示例一:
public static void main(string args) 12
3456
789執行結果:
str1str2: false
str2str3: false
str1==str3: true12
3分析,str2.intern()被呼叫時,str1 = 「abc」 已經將「abc」放入了常量池,根據方法注釋,str3返回的是拿到的是常量池中的str1,str2還是物件引用。所以有了上面的結果。
示例二:
public static void main(string args) 12
3456
7執行結果:
false
true12
分析,str1==str2為false就不用說了;str1.intern() == str2.intern()為true,在英文注釋裡有說:
s.intern() == t.intern() is true if and only if s.equals(t) is true.
也是就是兩個string物件,當且僅當它倆equals()比較值為true,那它倆intern()的「==」操作也為true。
String的substring()用於擷取字串
substring 用於返回乙個字串的子字串,即擷取字串功能。substring 常用的過載方法如下 substring int beginindex,int endindex 意思為返回下標從beginindex開始 包括 到endindex 不包括 結束的子字串。eg string str st...
提公升軟體效能
提高系統的安全性和健壯性,資料庫伺服器和應用伺服器,就要考慮冗餘設計。保證系統的高可用和高可靠以及高併發。保證系統在出現故障時,及時切換正常工作,使用雙機熱備份。使用redis快取伺服器提高系統的效能。使用讀寫分離技術減輕資料訪問的壓力,提公升系統的使用者體驗。在資料庫的設計上來使用分庫 分表 分割...
提公升頁面效能
1.資源壓縮合併,減少http請求 2.非核心 非同步載入 非同步載入的方式 a.動態指令碼載入 b.defer c.async defer 在html解析完成之後才會執行,並按照載入順序執行 async 在載入完成之後立即執行,和載入順序無關。3.利用瀏覽器快取 快取的分為強快取和協商快取 強快取...