Re: [問題] String的intern()有何好處?

看板java作者 (鄉民)時間16年前 (2010/01/09 12:57), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/5 (看更多)
※ 引述《tkcn (小安)》之銘言: : 剛從時光機裡頭找出一篇舊文: (原文數刪) : 3.若你需要大量compare兩個不同String物件的內容時可用intern() method, : 將一個相同內容的String創造出來並放入class的String literal pool中, : 以==代替.equals(), 因為==只看reference是否相同, : 遠比.equals()一個一個字元比較來的快. : 舉個例子: : String s1 = new String("abcdefghijklmnopqrstuvwxyz"); : String s2 = new String("abcdefghijklmnopqrstuvwxyz"); : String s3 = s1.intern(); : String s4 = s2.intern(); : if(s3==s4) //這兒是比較s1與s2的內容是否想同,原本是要用s1.equals(s2) : { //共要compare 26個字母是否相同, 現在只要看一次ref就行了. : System.out.println("這行會印出來!"); : } : 這樣一來多少就可以減少程式執行的時間了. : hope it helps.. 非常感謝tkcn幫忙找出這篇文章 也非常感謝各位幫我解答 大致上了解intern的優點了... 不好意思 我可以順便問個偏離主題的問題嗎? String s1 = new String("XXXX"); 說到這個指令的特性 似乎都是"不能共用物件"、"還要額外多開一個記憶區塊"、 "不能用==來比較(若有配合intern()則例外)"、"只能用equals來比較" 這樣給我的感覺就是: String s1 = new String("XXXX") 這個指令比不上 String s1 = "XXXX" 我想問的是... 在什麼情況下 我們寧願開兩個物件 使用這段code: String s1 = new String("XXXX") String s2 = new String("XXXX") 而不願意使用下列這段code呢? String s1 = "XXXX"; String s2 = "XXXX"; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.164.5.159 ※ 編輯: shorttime 來自: 218.164.5.159 (01/09 12:58) ※ 編輯: shorttime 來自: 218.164.5.159 (01/09 12:59)
文章代碼(AID): #1BI0opD0 (java)
討論串 (同標題文章)
文章代碼(AID): #1BI0opD0 (java)