1. 程式人生 > >java中 String.format與StringBuilder、String+的比較

java中 String.format與StringBuilder、String+的比較

效率比較程式碼如下:

		int [] testNums =new int[]{10,10000,100000,1000000,10000000};
		for(int item:testNums){
			System.out.println("testnums:"+item);
			long time1 = System.currentTimeMillis();
			for(int i=0;i<item;i++){
				String s=String.format("%s %s %s", "aa","bb","cc");
			}
			long time2 =System.currentTimeMillis();
			System.out.println("String.format waste time:"+(time2-time1)+"ms");
			
			long time3=System.currentTimeMillis();
			//StringBuilder ss=new StringBuilder();
			for(int i=0;i<item;i++){
				String ssa=new StringBuilder().append("aa").append("cc").append("dd").toString();
			}
			
			long time4 =System.currentTimeMillis();
			System.out.println("StringBulder  waste time:"+(time4-time3)+"ms");
			
			System.out.println();


從實驗結果來看,StringBuilder的執行效率高。


String + 的方式,編譯器會將其優化成 StringBuilder形式操作;但是不建議直接對字串進行“+”操作,因為容易出現多次建立物件。比如:

String s=""
for(int i=0;i<100;i++){
 s=s+"aa";
}
s+"aa"編譯器會將其優化成 new StringBuilder().append(s).append("aa").toString()

每迴圈一次,就會新例項化一個StringBuilder物件。

StringBuilder 會建立一個StringBuilder物件,容易多次重新分配緩衝;

String.Format 會建立一個 Formatter物件。