public static void testStringBuffer(){ long start System currentTimeMillis(); StringBuffer sbuf = new StringBuffer(); for(int=0;i<20000;i++){
sbuf.append(i+",");
} System.out.println(System, currentTimeMillis()- start);
}
public static void teststringBulider(){ long start = System currentTimeMillis(); StringBuilder builder = new StringBuilder( for (int i =0; i< 20000: i++)( builder. append(i +","); System, out. printIn(System. currentTimeMilliso- start);
}
}
public static void main(String[] args){ teststring(); teststringBuffer(); teststringBulider();
}
區別一:性能安全
運行結果以下:1217 9 6多線程
從測試結果看出, String類每次追加字符串都會建立新的對象,消耗的時間最長,性能極差。app
而 String Buffer和 String Builder每次追加字符串都是同一個對象,消耗的時間極短,性能良好。ide
而 String Buffer比 String builder消耗時間長一點點,這又是什麼緣由呢?別看急,繼續往下看,性能
區別二:線程是否安全測試
· String:線程不安全 · String Buffer:線程安全 · String Builder:線程不安全ui
String Buffer和 String Builder的使用幾乎徹底相同,惟一的區別就是線程安全性不一樣。spa
正是由於 String Buffer是線程安全的(支持同步鎖),因此性能比String Builder稍差一點。線程
能夠看到 String Builder速度是最快的,但當在多線程中使用 String Builder的操做是不安全的,而但 String Buffer是能夠正確操做的。code
固然大多數狀況下就是咱們是在單線程下進行的操做,因此大多數狀況下是建議用 String Builder而不用String Buffer的。
總結:
1.若是要操做少許的數據使用 String。
2 多線程操做字符串緩衝區下操做大量數據使用 String Buffe。
3.單線程操做字符串緩衝區下操做大量數據使用 String Builde。