String 串接是寫程式很常會遇見的情境,在 Java 中,字串相加是最不理想方式,因為會產生大量 String Object 在 String Pool 中,比較建議的方式是透過 StringBuilder 或 StringBuffer 來完成任務,但兩個的差異看起來只有一點點,但會影響其使用情境。
共同點
- 兩者都繼承
AbstractStringBuilder
,所以底層實作都是以 char array 來完成。 - 兩者的方法幾乎一致。
差異點
StringBuffer
是 synchronized,亦代表為Thread-safeStringBuilder
不是 synchronized,代表 Performance 會比較StringBuffer
好一點,但也代表StringBuilder
是 non-thread-safe 的。
補充
Apache LANG 779 issue 討論 ToStringBuilder 是否需要使用 StringBuffer。