该贴已经同步到 郝锡强的微博作者: 侯伟浩 时间: 2011-12-21 14:34
张老师不是说了么:当你知道这条路上就你自己走,你就闷着头暴走就可以--------------------------单线程(StringBuilder)
当你不知道是不是你自己的时候就要环顾一下四周看有没有车。--------------多线程(StringBuffer)
以下来自java帮助文档:
与StringBuffer类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快作者: 海中的游弋草 时间: 2011-12-21 14:43
JDK1.5版本之后出现了StringBuilder
StringBuffer 是线程同步的。
StringBuilder是线程不同步,效率比较高。 作者: 海中的游弋草 时间: 2011-12-21 14:47
StringBuilder和StringBuffer的区别
一个String对象的长度是固定的,不能改变它的内容,或者是附加新的字符至String对象中。您也许会使用+来串联字符串以达到附加新字符或字符串的目的,但+会产生一个新的String实例。如果程序对这种附加字符串的需求很频繁,并不建议使用+来进行字符串的串联。在面向对象程序设计中,最好是能重复运用已生成的对象,对象的生成需要内存空间与时间,不断地产生String实例是一个没有效率的行为。
J2SE 5.0提供java.lang.StringBuilder类,使用这个类所产生的对象默认会有16个字符的长度,您也可以自行指定初始长度。如果附加的字符超出可容纳的长度,则StringBuilder对象会自动增加长度以容纳被附加的字符。如果有频繁作字符串附加的需求,使用StringBuilder会让程序的效率大大提高。通过下面的简单测试程序就可以知道效能差距有多大。
ü 范例6.5 AppendStringTest.java
public class AppendStringTest {
public static void main(String[] args) {
String text = " ";
long beginTime = System.currentTimeMillis();
for(int i = 0; i < 10000; i++)
text = text + i;
long endTime = System.currentTimeMillis();
System.out.println( "执行时间: " + (endTime - beginTime));