1. 程式人生 > >string字串拼接應使用哪種方式比較好

string字串拼接應使用哪種方式比較好

我們所知道的字串String的拼接有: “+” 、 concat () 方式實現,或者使用StringBuilder、StringBuffer類實現。這幾種方式效能的從低到高進行排序,則順序為:“+”  <  concat ()  < StringBuffer < StringBuilder 。使用"+"效能是最差的,應該避免使用!!!

StringBuilder的效能是最高的,StringBuffer和StringBuilder的區別是:StringBuffer是執行緒安全的,而StringBuilder不是。在高併發的應用中,應該考慮使用StringBuffer! !它們實現的介面都是一樣的,只不過 StringBuffer的很多方法都加上了synchronized關鍵字修飾。

/**
 * 
 * @author 小欽
 *
 */
   public class TestString {
       public static void main(String[] args) {
	        int num=100000;
	        addTime(num);
	        concatTime(num);
	        stringBufferTime(num);
	        stringBuilderTime(num);
}

  public static void addTime(int num){
	       long start=System.currentTimeMillis();
	       String str="";
	     for (int i = 0; i < num; i++) {
		        str+=i;
	    }
	   System.out.println("字串拼接使用 + 耗時:" +(System.currentTimeMillis()-start)+"ms");
   }
	
  public static void concatTime(int num){
      long start=System.currentTimeMillis();
      String str="";
    for (int i = 0; i < num; i++) {
	        str.concat(String.valueOf(i));
   }
  System.out.println("字串拼接使用 concat 耗時:" +(System.currentTimeMillis()-start)+"ms");
}
  
  public static void stringBufferTime(int num){
      long start=System.currentTimeMillis();
      StringBuffer str=new StringBuffer();
    for (int i = 0; i < num; i++) {
	        str.append(String.valueOf(i));
   }
  System.out.println("字串拼接使用 StringBuffer 耗時:" +(System.currentTimeMillis()-start)+"ms");
}
  
  public static void stringBuilderTime(int num){
      long start=System.currentTimeMillis();
      StringBuilder str=new StringBuilder();
    for (int i = 0; i < num; i++) {
	        str.append(String.valueOf(i));
   }
  System.out.println("字串拼接使用 StringBuilder 耗時:" +(System.currentTimeMillis()-start)+"ms");
}

}

輸出:

         字串拼接使用 + 耗時:20325ms
         字串拼接使用 concat 耗時:12ms
         字串拼接使用 StringBuffer 耗時:7ms
         字串拼接使用 StringBuilder 耗時:5ms