今天看博客有瞄到一句 就是说,在大量使用字符串连接的时候用+号浪费性能,推荐使用 StringBuffer 的方式。这个挺早之前就经常看到有这么说的。但是,今天突然有个想法,既然用+号会浪费性能,那么,我们经常用 eclipse 或者 idea 来重写一个 javabean 的 toString 方法时,为什么都是用的+号的形式? 既然编辑器有提供帮我们写的工能,为什么编辑器不选择一个更有效率的办法?
我猜测是因为 toString 基本是在开发调试阶段使用,在正常业务逻辑中基本不会用到,所以也就不去在乎这一点了。
1
freelee 2017-03-11 15:37:25 +08:00
idea 这么提示,是因为你所用版本的 jvm ,会在编译的时候把这种简单的+连接改成 stringbuilder 拼接吧
http://stackoverflow.com/questions/1532461/stringbuilder-vs-string-concatenation-in-tostring-in-java |
2
ob 2017-03-11 16:43:27 +08:00 via Android
因为正常的 toString 很少超过 10 的吧,你试下 10 个以内两个的时间差。。
|
3
SoloCompany 2017-03-11 16:49:41 +08:00
你看的是历史书,估计是 java 1.0 年代时候的事情
|
4
xialdj 2017-03-11 16:57:43 +08:00 via iPhone
都已经不推荐用 stringbuffer 了 你这个书已经老了
|
5
CYKun 2017-03-11 17:32:20 +08:00 via Android
一个很简单的规则是,在循环里面的用 StringBuilder ,不在循环里面的就用加号。 Java8 之后还可以用 joining 收集器。
|
6
napsterwu 2017-03-11 18:24:19 +08:00
首先 要用 StringBuilder
第二 对于循环内的+号操作, jvm 会编译成每个循环 new 一个 StringBuilder ,然后 append ,然后把原来的 string 对象用这个临时变量的 toString 代替,个人感觉优化效果不大 所以 如果循环多 要在循环外面 new 一个 StringBuilder 然后在循环里面 append |