intern()的使用:

JDK1.6中,将这个字符串对象尝试放入串池。

JDK1.7起,将这个字符串对象尝试放入串池。

   // c在堆和字符串常量池中都创建了,c记录的是堆中的地址,d记录的是字符串常量池中的地址,所以不相等
        String c= new String("c");
        c.intern();
        String d="c";
        System.out.println(c ==d);//false

        // 创建了一个StringBuffer 两个new String 一个d的字符串空间 一个f的字符串空间 一个new String,然后调用tostring,一共是六个对象
        String e = new String("d")+new String("f");
        // 因为字符串常量池中没有df,就去创建,会把e对象的引用地址复制一份,放入串池,并返回串池中e的引用地址,对比的时候地址相同所以就相等了
        e.intern();
        String f = "df";
        System.out.println(e == f);// true