锁定老帖子 主题:10万个字符串相加会发生什么??
精华帖 (0) :: 良好帖 (3) :: 新手帖 (7) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-02-16
有意思,学习
chenguanwei2008 写道
kevintse 写道
binlaniua 写道
其实
String a = "1" + ..... + ... 和 StringBuffer sbuff = new StringBuffer(); sbuff.append(..).append(..) 是一样的.. 和 String a = "1"; a += "b"; 就不一样了。。 Oh, my god...不知道你是在哪里看到的~ "1" + ..... + ...居然跟StringBuffer.append()是一样的? String.+ 与StringBuffer.append()相比,性能是很低效的。String.+每加一次就生成一个临时对象,StringBuffer.append()则是append过程中不断重新分配内存(次数要远远低于String.+)。 拼接大量字符串的时候,用StringBuffer.append()的性能远远高于String.+,只是相对耗费比较多的内存。 你可以测试一下,或者看一下String和StringBuffer的源代码。 binlaniua说的是对的,你可以写代码试试 String a = "1" + ..... + ...
|
|
返回顶楼 | |
发表时间:2010-02-16
猜想:
对于编译期间就能确定的String值,的确就是如楼上所说。
理由是编译器做过优化了,他能够用对待StringBuffer的方式来优化String。
但是在运行时才确定的String值,也就是楼主的情况下,我对此表示怀疑。
chenguanwei2008 写道
kevintse 写道
binlaniua 写道
其实
String a = "1" + ..... + ... 和 StringBuffer sbuff = new StringBuffer(); sbuff.append(..).append(..) 是一样的.. 和 String a = "1"; a += "b"; 就不一样了。。 Oh, my god...不知道你是在哪里看到的~ "1" + ..... + ...居然跟StringBuffer.append()是一样的? String.+ 与StringBuffer.append()相比,性能是很低效的。String.+每加一次就生成一个临时对象,StringBuffer.append()则是append过程中不断重新分配内存(次数要远远低于String.+)。 拼接大量字符串的时候,用StringBuffer.append()的性能远远高于String.+,只是相对耗费比较多的内存。 你可以测试一下,或者看一下String和StringBuffer的源代码。 binlaniua说的是对的,你可以写代码试试 String a = "1" + ..... + ...
|
|
返回顶楼 | |