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」);app

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

相關文章
相關標籤/搜索