String常量池问题

对呀 对呀 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
jdk 1.8运行以下代码,第一个是true,第二个是false ,第三个是true
String s1 = "aaa" + new String("aaa");
s1.intern();
String s2 = "aaaaaa";
System.out.println(s1 ==s2);//true

String s3 = new String("bbbbbb");
s3.intern();
String s4 = "bbbbbb";
System.out.println(s3 ==s4);//false

char[] ch = {'c','c','c','c','c','c'};
String s5 = new String(ch, 0, 6);
s5.intern();
String s6 = "cccccc";
System.out.println(s5 ==s6);//true
疑惑点:字符串按拼接和直接new的不同形式创建对象,查看第一种编译的class字节码,发现是通过StringBuilder.append实现,最后的toString,省去中间过程就类似与第三种情况,这几种情况内存是怎么变化的呢,为什么第二个是false另外两个是true
...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部
对呀
Java SE 62,620 成员 307,251 内容