StringBuilder, StringBuffer 差異

String 串接是寫程式很常會遇見的情境,在 Java 中,字串相加是最不理想方式,因為會產生大量 String Object 在 String Pool 中,比較建議的方式是透過 StringBuilder 或 StringBuffer 來完成任務,但兩個的差異看起來只有一點點,但會影響其使用情境。

共同點

  • 兩者都繼承 AbstractStringBuilder ,所以底層實作都是以 char array 來完成。
  • 兩者的方法幾乎一致。

差異點

  • StringBuffer 是 synchronized,亦代表為Thread-safe
  • StringBuilder 不是 synchronized,代表 Performance 會比較 StringBuffer 好一點,但也代表 StringBuilder 是 non-thread-safe 的。

補充

Apache LANG 779 issue 討論 ToStringBuilder 是否需要使用 StringBuffer。