【Stackoverflow好問題】StringBuilder和StringBuffer對比

問題
StringBuilder和StringBuffer有哪些區別呢?


精華回答
最主要的區別,StringBuffer的實現使用了synchronized(鎖),而StringBuilder沒有。
因此,StringBuilder會比StringBuffer快。
如果你
          非常非常追求性能(其實這兩個都不慢,比直接操作String,要快非常多了)
          不需要考慮線程安全問題,
          JRE是1.5+
可以用StringBuilder,
反之,請用StringBuffer。

性能測試例子:
如下這個例子,使用StringBuffer,耗時2241ms,而StringBuilder是753ms
public class Main {
    public static void main(String[] args) {
        int N = 77777777;
        long t;

        {
            StringBuffer sb = new StringBuffer();
            t = System.currentTimeMillis();
            for (int i = N; i --> 0 ;) {
                sb.append("");
            }
            System.out.println(System.currentTimeMillis() - t);
        }

        {
            StringBuilder sb = new StringBuilder();
            t = System.currentTimeMillis();
            for (int i = N; i --> 0 ;) {
                sb.append("");
            }
            System.out.println(System.currentTimeMillis() - t);
        }
    }}



stackoverflow討論原址
http://stackoverflow.com/questions/355089/stringbuilder-and-stringbuffer


專欄介紹:
非常喜歡stackoverflow,總能在上面找到疑難雜症的解決辦法。偶然發現該網站有一個熱度榜單。於是精選了熱度較高的一些問題,閱讀每個問題的答案,然後按照自己的理解梳理出來。因此,這些文章不是真正的翻譯,而是按照自己的理解做了一些增刪和個人風格的潤色,希望能把上面的討論,更精簡有效地分享給大家。
如需轉載,請註明原文地址

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