string字串拼接應使用哪種方式比較好
阿新 • • 發佈:2018-11-11
我們所知道的字串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