java中string的intern()解析

在Java的api中的解释是
intern()
          返回字符串对象的规范化表示形式。
这句话很难理解

以例子说明作用
 

         String str1 = "fly";
        String str2 = "weight";
        String str3 = "flyweight";
        String str4 = null;
        str4 = str1 + str2;
        System.out.println(str3 == str4);
        str4 = (str1 + str2).intern();
        System.out.println(str3 == str4);

结果是:
      flase
      true
原因是,以下图解释





 
String的intern()方法
如果池(Pool)中已经包括了相同的String对象(相同与否由equals()方法决定),那么会从池中返回该字符串
否则的话原String对象会被加入池中,并返回这个String对象的参考

你可能感兴趣的:(String)