String对象底层的理解

今天在群里看到一个问题?问题如下:
下面代码***产生了几个String对象?
String s="a";
s=s+"b"+"c";
s=s+"b"+"c"+"d";
System.out.print(s);

各位朋友你们认为答案是什么?可否给出理由?
全部评论
a,b,c,d,abc,abcd吗?
点赞 回复 分享
发布于 2019-09-03 20:25
//// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)//public class Company {    public Company() {    }    public static void main(String[] var0) {        String var1 = "a";        var1 = var1 + "bc";        var1 = var1 + "bcd";        System.out.println(var1);    }}刚刚尝试了一下,上面的反编译结果,常量字符串被优化,如若按照这样,产生了3个常量,a,bc, bcd。算上加法产生的,4个吗?目前看字节码还是有点困难,求个大佬的解答
点赞 回复 分享
发布于 2019-09-03 20:42
对象1:a 对象2:bc 对象3:abc 对象4:bcd 对象5:abcbcd 是这样吗?
点赞 回复 分享
发布于 2019-09-03 20:33
第一句就是"a" 第二句相当于"a"+"bc" 第三句相当于"abc"+"bcd" 最后s是"abcbcd" 一共五个
点赞 回复 分享
发布于 2019-09-03 20:29

相关推荐

小浪_Coding:个人技能一条测试没有
点赞 评论 收藏
分享
群星之怒:不是哥们,你就不好奇瘫痪三十年的老植物人是啥样的吗?
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客企业服务