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

相关推荐

不愿透露姓名的神秘牛友
06-10 15:24
高考前一晚在OPPO手机上设置了早上5:30的闹钟,然而闹钟并未按时响起。直到妈妈做好早餐后,在6:27打开手机才发现闹钟未触发,“气得早上饭都没吃”。资本家你赢了
永不遗忘:我来解释一下 :Oppo 手机晚上两点会自动进行系统更新,这个系统更新会重置掉所有设置好的闹钟,而且他也不会告诉你,而且只有 Oppo 会这样,华为苹果小米三星都不会
点赞 评论 收藏
分享
自由水:这HR已经很好了,多的是已读不回和不读了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务