Re: [問題] String的intern()有何好處?
※ 引述《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)
討論串 (同標題文章)