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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2014-8-13 20:55  /  25684 人查看  /  42 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s="a"+"b"+"c"+"d" 这句的运算部分在编译时就完成了,运行时只有一个 "abcd" 对象
String s = a+b+c+d;  这句有 "ab", "abc", "abcd" 三个
sb.append("a").append("b").append("c").append("d"); 有 "a", "b", "c", "d" 四个字符串对象
如果中间的换成 sb.append(a).append(b).append(c).append(d); 不创建新对象
回复 使用道具 举报
ZYcoc0 发表于 2014-8-13 23:15
我们已经知道了 String str = new String("abc");是创建了两个对象

这句话为啥和我理解的不一样呢?  我刚 ...

在 new String("abc") 之前,要有一个 "abc" 对象作为参数传进来啊,这个参数不可能是它自己啊
回复 使用道具 举报
原来真的有答案…
第一题是错的,只有一个,编译器就是干这个的
第三题看你的意思是跟2连着的,你怎么解释两个 StringBuilder sb = new StringBuilder(); ?
回复 使用道具 举报
杨庆雷 发表于 2014-8-14 00:21
最后是只存在一个 但是过程中确创建了7个 ,“a”“b““c”不会凭空而来   其他的没有引用的指向,被收 ...

编译和运行是两个分开的过程
回复 使用道具 举报
木易在他乡 发表于 2014-8-14 10:25
StringBuilder在连接新的字符串时,会根据自身capacity扩容所以不用在新建对象;但是在创建时,是要建立一个 ...

创建不在那一句不是不算吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马