关于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#
全部评论
反编译看下append干了什么应该就清楚了
点赞 回复 分享
发布于 2019-06-06 17:53
java 常量池中本就有
点赞 回复 分享
发布于 2019-06-06 18:19

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务