String用於提公升效能的intern 方法

2021-10-08 09:48:00 字數 883 閱讀 8983

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.利用瀏覽器快取 快取的分為強快取和協商快取 強快取...