Java基礎 (3) - String/StringBuilder/Buffer StringFor

區別
1.可變與不可變
String —> private final char value[]; final 不可變的
StringBuilder/Buffer —> char value[] 可變的
String設計成不可變原因 -> 多個指引指向同一個內存空間,如任意指引修改,值將改變,其它引用也將改變。

2.是否多線程安全
String —> 安全 (不可變對象)
StringBuilder —> 不安全
StringBuffer —> 安全

3.性能
1.StringBuilder > StringFormat StringFormat內部也是StringBuilder AppendFormat實現的。(當數據量小的時候 性能差距不是很明顯)
2.StringBuilder大概比Buffer快15% 。
3.“A” + “b” 系統編譯的時候自動轉換成 new StringBuilder.append(“a”).append(“b”);

4.使用上
StringBuilder 默認情況是16個字節。當內容超過指定大小,StringBuilder會擴容 (2*原大小+2)。因此根據業務需求指定合適的大小很重要(避免多次 複製成本和申請內存空間 ),一般情況下字符佔2個字節 中文佔2~4個字節。

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