String類的intern 方法的例題詳解

2021-10-13 17:48:30 字數 687 閱讀 1991

ps:1.8和1.6版本的intern方法的做法會有所不同

jdk 1.8 將這個字串物件嘗試放入串池,如果有則並不會放入,如果沒有則放入串池, 會把串 池中的物件返回

jdk1.6 將這個字串物件嘗試放入串池,如果有則並不會放入,如果沒有會把此物件複製乙份, 放入串池, 會把串池中的物件返回

(基於1.8來實現)

例題一:

public

class

demo1_23

}

例題二:

public

class

demo1_23

}

ps:通過上面的兩個例子可以更好的理解intern,第乙個例子中常量池沒有常量,所以使用s.intern()時,是將堆中引用的物件放入常量池,並返回s2,所以下面兩個式子都為true;第二個例子中常量池原本有「ab」常量,所以返回的s2是常量池中的物件,所以第乙個式子相同,第二個不相同。

jdk1.6和1.8主要的區別在於串池中原本沒有「ab」的情況

(基於1.6)

public

class

demo1_23

}

ps:s2和x都是串池中的物件,s是堆中的物件,所以是false

String類的intern 方法

返回字串物件的規範化表示形式 當建立乙個string類的物件時,也同時建立了乙個初始為空的字串物件池,並由類string來維護。當呼叫乙個string物件的intern 方法時,類string會去查詢該字串物件池,是否包含乙個等於該物件的字串 方法是通過equals 來確定 如果存在,則會返回這個池...

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

jdk每次公升級都會做很多優化,我們使用最多的string常量類也在不斷被優化。這次和大家分享的是jdk1.8中對string的優化之一,intern 方法的使用。對應的方法及注釋如下 一句話概括,就是通過常量池復用來節省記憶體空間 減少開銷以提公升效能。tips 這裡簡單介紹一下常量池,方便下文理...

Java String類中的intern 方法

今天在看一本書的時候注意到乙個string的intern 方法,平常沒用過,只是見過這個方法,也沒去仔細看過這個方法。所以今天看了一下。個人覺得給string類中加入這個方法可能是為了提公升一點點效能,因為從常量池取資料比從堆裡面去資料要快一些。個人感覺 api上的那幾句關於這個方法,其實總結一句就...