O'Reilly对此的看法是他并不觉得使用第一种编码会比第二种,实际上,以前旧版本的jvm是不会对string的拼接操作进行优化的,使得每次在进行拼接string时会再生成一个新的对象,因此,当循环数非常大时,例如10000个,你可以在内存中看到10000多个对象(没有回收的前提下),因此对于上千个并发来说,这个是相当恐怖的,但现在的JVM已经相当优化了,它会对string进行解释,因此,他认为上面两种在大批次循环是没有什么区别的,到最后,你同样要maintain a bigger blob of uglier code until the end of time,其实,如果在JVM有进行优化的前提下,第二种是在牺牲了一小部分性能的前提下达到了维护的方便性的,和代码的可读性的,因此个人也同意O'Reilly的看法,呵呵,欢迎大家继续讨论.
------解决方案-------------------- 通过反编译可以看出.string 在使用操作符"+"时是创建一个StringBuilder来构造最后的Stirng.但是,这种优化程度相比单纯使用StringBuilder是有限的..具体你可以参考下thinking in java第四版中文版284页.讲解得很清楚..
------解决方案--------------------