A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋旭东 中级黑马   /  2013-7-3 19:13  /  837 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  • String s="a"+"b"+"c"+"d";

这条语句一共创建了多少个对象?为什么?,这个问题纠结了我好久,请各位大大详细的解释下?

3 个回复

正序浏览
关于这个问题,我相信论坛好多帖子都讨论过,你可以搜搜,有总结的更详细的
回复 使用道具 举报
1.简单理解下
  String s="a"+"b"+"c"+"d";
在编译时就直接将它们连接的结果提取出来变成了"abcd"
  也就是:String s="abcd";
2.利用下 javap -c 类 ,也就是反编译java字节码文件:  
  简单说下JVM指令(不用太过深究,仅帮助你理解)
  ldc在这里作用是:
   将常量池中的"abcd"的引用压入操作数栈(关键是看后面的//String abcd,说明了编译器对该语句的处理)
astore_1
  将栈顶引用弹出赋给1号局部变量即s

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 大神啊

查看全部评分

回复 使用道具 举报
这个问题挺有意思,不知道
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马