这个是执行效率。
public class Test10
{
public static void main(String[] args)
{
StringBuffer strBuf = new StringBuffer();
String str = "hello";
int times = 1500000;
long beginTime = System.currentTimeMillis();
for(int i = 0; i < times; i++)
{
strBuf.append(str);
}
System.out.println("StringBuffer耗时:" + (System.currentTimeMillis() - beginTime));
System.out.println("========================================");
StringBuilder strBud = new StringBuilder();
beginTime = System.currentTimeMillis();
for(int i = 0; i < times; i++)
{
strBud.append(str);
}
System.out.println("StringBuilder耗时:" + (System.currentTimeMillis() - beginTime));
}
}
StringBuffer耗时:265
========================================
StringBuilder耗时:156
原因就是StringBuffer要进行同步操作,这样就大大增加了开销。
StringBuilder没有同步,相对StiringBuilder要高效很多。
随便提醒一下,加入 String str = "";要是进行str += "hello";执行那么多次的话,会消耗掉比StringBuffer上万倍的耗时。所以以后进行字符串拼接啊插入啊增加啊最好先选择
StringBuilder,要是在多线程多就要用StringBuffer。千万别用直接的字符串 += 来拼接字符串了。
你可以进行测试,就是刚才我说的让str执行+=操作,最后计算它们的执行时间你就明白了 |
|