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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM