黑马程序员技术交流社区
标题:
字符串创建对象问题
[打印本页]
作者:
宋旭东
时间:
2013-7-3 19:13
标题:
字符串创建对象问题
String s="a"+"b"+"c"+"d";
这条语句一共创建了多少个对象?为什么?,这个问题纠结了我好久,请各位大大详细的解释下?
作者:
lanbuohan
时间:
2013-7-3 19:31
这个问题挺有意思,不知道
作者:
张洪慊
时间:
2013-7-3 19:33
1.简单理解下
String s="a"+"b"+"c"+"d";
在编译时就直接将它们连接的结果提取出来变成了"abcd"
也就是:String s="abcd";
2.利用下 javap -c 类 ,也就是反编译java字节码文件:
abcd.PNG
(7.78 KB, 下载次数: 0)
下载附件
2013-7-3 19:28 上传
简单说下JVM指令(不用太过深究,仅帮助你理解)
ldc在这里作用是:
将常量池中的"abcd"的引用压入操作数栈(关键是看后面的//String abcd,说明了编译器对该语句的处理)
astore_1
将栈顶引用弹出赋给1号局部变量即s
作者:
张洪慊
时间:
2013-7-3 22:02
关于这个问题,我相信论坛好多帖子都讨论过,你可以搜搜,有总结的更详细的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2