首页 > 代码库 > Java中StringBuilder的清空方法比较

Java中StringBuilder的清空方法比较

摘自:http://blog.chinaunix.net/uid-20745012-id-271466.html

StringBuilder 没有提供clear或empty方法。

清空有3种方法:

  1)新生成一个,旧的由系统自动回收

  2)使用delete

  3)使用setLength

将三种方法循环1000万次,代码:

 

/** * @作者 whs * @创建日期 2015年1月30日 * @版本 V 1.0 */package strdemo;public class StrBuilder {		static String a;	static long time;		public static void main(String[] args) {		StringBuilder sb = new StringBuilder();		StringBuilder sb2=new StringBuilder();		time = System.currentTimeMillis();		for(int i=0;i<10000000;i++){			sb.delete(0, sb.length());			sb.append("someThi1ng");			sb.append("someThi2ng");			sb.append("someThi3ng");			sb.append("someThi4ng");			sb.append("someThi5ng");			sb.append("someThi6ng");			a = sb.toString();		}		System.out.println("Way1="+(System.currentTimeMillis()-time));		time = System.currentTimeMillis();		for(int i=0;i < 10000000;i++){			sb2.setLength(0);			sb2.append("someThin1g");			sb2.append("someThin2g");			sb2.append("someThin3g");			sb2.append("someThin4g");			sb2.append("someThin5g");			sb2.append("someThin6g");			a = sb2.toString();		}		System.out.println("Way2="+(System.currentTimeMillis()-time));				time=System.currentTimeMillis();		for(int i=0;i < 10000000;i++){			StringBuilder sb3=new StringBuilder();			sb3.append("someThing1");			sb3.append("someThing2");			sb3.append("someThing3");			sb3.append("someThing4");			sb3.append("someThing5");			sb3.append("someThing6");			a=sb3.toString();		}		System.out.println("Way3="+(System.currentTimeMillis()-time));			}}

 

注意append的字符串要都不相同,否则会因为java 的String  pool对结果造成影响(即Way1好于Way2)
结果:

  1. Way1=1672
    Way2=1632
    Way3=2532

 

可以将各方法多重复几次,点到顺序,等 总体来看:Way2好于Way1好于Way3

Java中StringBuilder的清空方法比较