StringBuilder>StringBuffer>Stringjava
爲何String的執行速度低?安全
在java文檔中String類對象被稱做不可變字符串,對String類對象進行的修改,實際並無改變原字符串的代碼單元序列,而是建立了一個新的字符串,若須要在大量的修改字符串的狀況下,String類對象每次修改都須要構建一個新的String對象,既耗時,又浪費空間, 使用StringBuilder類就能夠避免這個問題的發生若須要改變字符串,只須要調用append方法bash
StringBuilder builder=new StringBuilder();
builder.append(ch);//appends a single character
builder.append(str);//appends a string
複製代碼
在須要構建字符串時調用toString便可多線程
String str=builder.toString();
複製代碼
那麼爲何StringBuilder的性能優於StringBuffer呢?app
由於StringBuilder沒有考慮多線程的狀況,在多線程的狀況下不安全,而StringBuffer在多線程下線程安全,天然速度就比不上StringBuilder性能
1.操做數據量少使用String,編譯器能夠使不變的字符串共享ui
2.單線程數據量多使用StringBuilderspa
3.多線程數據量多使用StingBuffer線程