我能理解使用StringBuffer的同行们~

不可否认,将频繁进行添加的类变量(字符串)声明StringBuffer类型是明智的。但是,将频繁进行添加的方法变量声明为StringBuffer类型这样的事情怎么还会有人去干呢?在栈区使用StringBuilder,性能完爆StringBuffer~

注意使用场景,性能只是一个方面,还有比性能更决定性的方面——多线程。 百度一下StringBuilder和StringBuffer不难吧?

2012-12-30 20:48 "@SpeedVan"的内容
注意使用场景,性能只是一个方面,还有比性能更决定性的方面——多线程。 百度一下StringBuilder和StringBuffer不难吧? ...


我已经说明了在栈区使用StringBuilder啊,每个栈区的内存空间都是独立的,根本不涉及到线程安全问题。如果是成员变量,那是使用StringBuffer无可厚非。

2013-01-02 02:38 "@crixus"的内容

我已经说明了在栈区使用StringBuilder啊,每个栈区的内存空间都是独立的,根本不涉及到线程安全问题。如果是成员变量,那是使用StringBuffer无可厚非。 ...

变量声明什么都不能说明,要是这个Buffer/Builder对象是别处来又到别处去呢?若果对象生命周期就在方法区,那当然是StringBuilder对象更优。当然,我也不了解你的情况,但你从声明角度思考,我觉得有问题。
[该贴被SpeedVan于2013-01-02 14:08修改过]

2013-01-02 14:07 "@SpeedVan"的内容
变量声明什么都不能说明,要是这个Buffer/Builder对象是别处来又到别处去呢?若果对象生命周期就在方法区,那当然是StringBuilder对象更优。当然,我也不了解你的情况,但你从声明角度思考,我觉得有问题。 ...

到别处去且不用看,先看从哪里来。一、方法内部声明,即局部变量,在栈区果断使用StringBuilder;二、方法参数。参数来源方向(即声明处),也有两种情况:1在传递参数处,方法内部声明,和前者一致。2为类变量,还是要考虑线程安全问题,当然了如果是volatile修饰的成员变量又另当别论。

搞清了来源,再来看去处,它也无非作其他变量的声明或返回结果,而其中变化也无非这几种。万变不离其宗,看似很复杂的表面,究其底层声明就能决定是否存在线程安全问题。