Java字符串處理機(jī)制
?* 簡(jiǎn)單的總結(jié)下:intern()方法
?* 這個(gè)方法是扣留的意思。呵呵。
?* 把當(dāng)前字符串扣留到池中,然后用同樣的字符串時(shí)就是從內(nèi)存池中取,而不會(huì)產(chǎn)生新對(duì)象,提供效率了撒。
?* 都知道我們?cè)贘VM中內(nèi)置了一個(gè)字符串池。
?* 所有的字面值字符串和字符串賦值常量表達(dá)式都用intern()方法進(jìn)行操作。
?* 但是有一點(diǎn)不同,就是通過new生成的字符串對(duì)象,這個(gè)對(duì)象生成了兩個(gè)字符串對(duì)象,
?* 一個(gè)是字面字符串(這個(gè)可以從池中取,或者生成新字符串對(duì)象,并扣留到池中),然后在將這個(gè)字符串對(duì)象
?* 的值傳給new出來的字符串對(duì)象的構(gòu)造器,生成一個(gè)新字符串對(duì)象(這個(gè)字符串是沒有扣留到池中的),記住new關(guān)鍵字總是生成了對(duì)象。
?* 而我們給這個(gè)new出的字符串調(diào)用intern()方法,就會(huì)把這個(gè)字符串對(duì)象扣留到池中,而且如果池中有相同的字面值的字符串,
?* 就會(huì)返回池中的字符串,如果我們將該字符串引用賦給原先字符串的引用變量,那么我們就會(huì)省去一個(gè)對(duì)象,原先的字符串對(duì)象就會(huì)被某一個(gè)時(shí)刻回收,
?* 如果池中沒有相同值的字符串就返回該對(duì)象自身。
?* 這個(gè)方法是扣留的意思。呵呵。
?* 把當(dāng)前字符串扣留到池中,然后用同樣的字符串時(shí)就是從內(nèi)存池中取,而不會(huì)產(chǎn)生新對(duì)象,提供效率了撒。
?* 都知道我們?cè)贘VM中內(nèi)置了一個(gè)字符串池。
?* 所有的字面值字符串和字符串賦值常量表達(dá)式都用intern()方法進(jìn)行操作。
?* 但是有一點(diǎn)不同,就是通過new生成的字符串對(duì)象,這個(gè)對(duì)象生成了兩個(gè)字符串對(duì)象,
?* 一個(gè)是字面字符串(這個(gè)可以從池中取,或者生成新字符串對(duì)象,并扣留到池中),然后在將這個(gè)字符串對(duì)象
?* 的值傳給new出來的字符串對(duì)象的構(gòu)造器,生成一個(gè)新字符串對(duì)象(這個(gè)字符串是沒有扣留到池中的),記住new關(guān)鍵字總是生成了對(duì)象。
?* 而我們給這個(gè)new出的字符串調(diào)用intern()方法,就會(huì)把這個(gè)字符串對(duì)象扣留到池中,而且如果池中有相同的字面值的字符串,
?* 就會(huì)返回池中的字符串,如果我們將該字符串引用賦給原先字符串的引用變量,那么我們就會(huì)省去一個(gè)對(duì)象,原先的字符串對(duì)象就會(huì)被某一個(gè)時(shí)刻回收,
?* 如果池中沒有相同值的字符串就返回該對(duì)象自身。
posted on 2009-11-04 20:57 vagasnail 閱讀(306) 評(píng)論(0) 編輯 收藏 所屬分類: Java