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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ↘ふ紫铯幽夢 于 2014-5-29 09:38 编辑

关于String s="a"+"b"+"c"究竟在内存创建了几个对象这个问题,以前也有人发过,但是看到好多人回复都说创建了多个对象,也有人说只创建了一个。  到底那个答案是对的。该怎么去证实,有没有更权威的回答。小弟万分感谢。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

14 个回复

倒序浏览
Lin0411 发表于 2014-5-27 19:51
首先要明确的是以String s = "abc"这种形式创建的字符串是存储在常量池中的,如果常量池中有相应的字符串则 ...


这个答案貌似合理,有没有什么工具和方法可以查看堆内存中的对象来证实。。。
回复 使用道具 举报
想飞的鱼 发表于 2014-5-27 20:48
首先,其实+连接符是通过StringBuffer类和它的append方法实现的,
String s = "a"+"b"+"c";这句代码在编译 ...

怎么证实。。。
回复 使用道具 举报
ithmC4 发表于 2014-5-28 11:19
知识点:编译器对字符串常量表达式进行优化
1.
String s1 = "abc";

有道理。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马