作者shorttime (乡民)
看板java
标题Re: [问题] String的intern()有何好处?
时间Sat Jan 9 12:57:21 2010
※ 引述《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)