讨论下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到底有毛用啊????

你可能感兴趣的:(java,String)