StringBuilder

2010 年 4 月 22 日7530

java中的String对象的执行有很多问题,如果从效率的角度出发,就需要考虑StringBuilder,StringBuilder和JAVA里的普通STRING运算不同,当每使用+=运算符来连接字符串每次都会生成一个新的String对象来保存新的Java对象,然而StringBuilder会为这个过程设置缓存。所以说StringBuilder必然快,快也是必然的啊。。。

 

看下面的代码,主要功用是会显示将abc字符串连接50000次所耗费的时间。
 
String test = “”;
 
long start = System.currentTimeMillis();
 
for(int i = 0; i < 50000; i++) {
 
         test += “abc”;
 
}
 
System.out.println(“Time lapse using +=: ” +
 
System.currentTimeMillis() – start) + ” milliseconds”;

 
执行结果是:
 
Time lapse using +=: 9900 milliseconds

 
现在考虑用下面的代码来试一下:
 

test = “”;
 
start = System.currentTimeMillis();
 
StringBuilder builder = new StringBuilder();
 
for(int i = 0; i < 50000; i++) {
 
         builder.append(“abc”);
 
}
 
System.out.println(“Time lapse using StringBuilder: ” +
 
         (System.currentTimeMillis() – start) +
 
         ” milliseconds”);
 
结果是:
 
Time lapse using StringBuilder: 0 milliseconds

0 0