String StringBuffer StringBuilder 對比

1.jdk版本支持
StringBuilder JDK1.5以後版本支持
2.線程安全
StringBuffer 線程安全
StringBuilder 線程不安全
Java.lang.StringBuffer 線程安全的可變字符序列。類似於 String 的字符串緩衝區,但不能修改。可將字符串緩衝區安全地用於多個線程。可以在必要時對這些方法進行同步,因此任意特定實例上的所有操作就好像是以串行順序發生的,該順序與所涉及的每個線程進行的方法調用順序一致。
每個字符串緩衝區都有一定的容量。只要字符串緩衝區所包含的字符序列的長度沒有超出此容量,就無需分配新的內部緩衝區數組。如果內部緩衝區溢出,則此容量自動增大。從 JDK 5.0 開始,爲該類增添了一個單個線程使用的等價類,即 StringBuilder 。與該類相比,通常應該優先使用 StringBuilder 類,因爲它支持所有相同的操作,但由於它不執行同步,所以速度更快。
但是如果將 StringBuilder 的實例用於多個線程是不安全的。需要這樣的同步,則建議使用 StringBuffer 。
3.速度
一般情況下,速度從快到慢:StringBuilder>StringBuffer>String.當需要在循環中多次使用字符串拼接時,建議使用StringBuilder或StringBuffer.當數量級在百萬級(這裏可能不準確)時,StringBuilder的速度會體現出來.
4.參數傳遞問題
方法a(){String str;....;b(str);//調用b方法,處理str}
方法b(String str){str="test";}
此時,方法a中的str並不會改變,因爲str="test"時,str重新被分配了內存
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章