jdk7 版本
例子一:
String s4 = new String("ja") + new String("va");
s4.intern();String s3 = "java";
System.out.println(s3 == s4);//false
例子二:
String s4 = new String("1ja") + new String("va");
s4.intern();
String s3 = "1java";
System.out.println(s3 == s4);//true
例子三:
String s31 = new String("a") + new String("1");
String s = "a1";
System.out.println(s31 == s31.intern()); false
例子四:
String s31 = new String("a") + new String("1");
System.out.println(s31 == s31.intern()); //true
在jdk7 中,intern 方法会判断常量池是否存在,存在则返回一个对常量池的引用,不存在则在常量池中生成一个对堆的引用(这个是与jdk6 不同之处,常量池中不存在的情况促使 例子四 中s31与 s31.intern 相等)
例子一 说明了了 “ java” 在虚拟机加载时已经被放在了常量池