讨论下String.intern方法存在的意义

关于string类实例生成方法的讨论已经做了很多了,无非就是生成几个对象,堆里的对象,string pool里的对象这些~blablabla~~~
我想说的是intern方法到底有什么意义

我们知道,当一个string类型的变量以这个形式赋值时,

String str = "aaa"; 


它会先在string pool中查看有没有一个“aaa”的string对象存在,如果有,返回该对象在string pool中的地址,若没有,则生成一个对象扔到string pool中,再返回该地址。
那么intern方法呢,比如

"aaa".intern();


他也是先在string pool中查看有没有一个“aaa”的string对象存在,如果有,返回该对象在string pool中的地址,若没有,则生成一个对象扔到string pool中,再返回该地址。
那它的存在有个毛线意思啊??带着这个疑问,我去查文档,搜网页,最后得到一个答案是string对象在比较时“==”要比equals方法快很多~~

喔~~~原来如此。于是乎,我带着激动的心情写了两个测试类,来验证这一观点


public class EqualTest
{
public static void main(String[] args)
{
String str1 = new String("aaa");
String str2 = new String("aaa");
Boolean result;
long time1 = System.currentTimeMillis();
long time2;
for(long i = 0; i < 1000000; i++)
{
result = str1.equals(str2);
}
time2 = System.currentTimeMillis();
System.out.println(time2 - time1);
}
}


public class InternTest
{
public static void main(String[] args)
{
String str1 = new String("aaa");
String str2 = new String("aaa");
Boolean result;
long time1 = System.currentTimeMillis();
long time2;
for(long i = 0; i < 1000000; i++)
{
result = (str2.intern() == str1.intern());
}
time2 = System.currentTimeMillis();
System.out.println(time2 - time1);
}
}


然后满心欢喜的期待着出现满意的结果。。。
然后结果是这样的

EqualTest
12

InternTest
186

摔!!!你妹啊。。。。这能叫快???

彻底崩溃了。。。于是乎写了这么一篇东西来发泄下。。。

哪位大哥大姐好心来帮下撒~~intern到底有毛用啊????
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值