关于String.intern()方法的问题
今天看Java虚拟机中的常量池部分提到了String.intern()方法,我jdk是1.8的,我跑了下代码
String str1 = new StringBuffer("计算机").append("va").toString(); System.out.println(str1.intern() == str1); String str3 = new String("maths"); String str2 = new StringBuilder("mat").append("hs").toString(); System.out.println(str2.intern() == str2);
第一个是true,第二个是false,这里也符合intern()的用法
但是下面
String str1 = new StringBuffer("ja").append("va").toString(); System.out.println(str1.intern() == str1);
按道理这里输出也是true才对吧,为啥输出是false, 书上说这个"java”字符串不符合首次出现的原则,难道常量池里自带着“java”这个字符串吗
#Java#