开发者社区> 问答> 正文

关于java中String的对象问题

String s = "abc";
String s1 ="a"+"b"+"c";
看有关书籍介绍说这上面两句代码内存中创建了4个对象,但是也有些资料上说是只创建了一个对象,因为编译器会把字符串常量在编译过程中直接相加?
还有就是 String a = "abc";
String c = a+"d";
String d = a+"d";
这个时候创建了几个对象呢?为什么c和d不相等呢

展开
收起
蛮大人123 2016-02-19 14:16:49 1916 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    String s = "abc";
    String s1 ="a"+"b"+"c";
    这里只有两个对象s和s1,因为这里的字符串都是字面常量。
    String a = "abc";
    String c = a+"d";
    String d = a+"d";
    这里是3个对象,a,c,d, c与d不相等,是因为他们都不是字面常量,是经过相加而来,相加而来的字符串,都是copy到新内存块里,所以c与d不相等。
    这一块可以参考《深入理解Java虚拟机》

    2019-07-17 18:44:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载