String、StringBuffer與StringBuilder之間區別

String對象是不可改變的,每次使用String類中的方法時,都要在內存中創建一個新的字符串對象,這就需要爲該新對象分配新的空間。在需要對字符串執行重複修改的情況下,與創建新的String對象相關的系統開銷可能會非常昂貴。如果要修改字符串而不創建新的對象,則可使用StringBuilder類。

對於String類我就不想舉例了,使用的很普遍。對於像我這樣的初學者來說,StringBuilder類用到的情況相對較少,通常容易碰到的情況是:當在一個循環中將許多字符串連接在一起時,使用StringBuilder類可以提升性能。具體化一點就是大家有時候在程序中寫SQL的時候,比如我們需要同時執行多個SQL語句,那麼我們就可以採用StringBuilder類,來實現同時執行多條SQL語句,從而也可以實現SQL事物的回滾。

1.三者在執行速度方面的比較:StringBuilder >  StringBuffer  >  String
2.String <(StringBuffer,StringBuilder)的原因
    String:字符串常量
    StringBuffer:字符創變量
    StringBuilder:字符創變量

3StringBuilder:線程非安全的
   StringBuffer:線程安全的

當我們在字符串緩衝去被多個線程使用是,JVM不能保證StringBuilder的操作是安全的,雖然他的速度最快,但是可以保證StringBuffer是可以正確操作的。當然大多數情況下就是我們是在單線程下進行的操作,所以大多數情況下是建議用StringBuilder而不用StringBuffer的,就是速度的原因。

對於三者使用的總結: 1.如果要操作少量的數據用 = String
           2.單線程操作字符串緩衝區 下操作大量數據 = StringBuilder
3.多線程操作字符串緩衝區 下操作大量數據 = StringBuffer


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章