close

String因為字串池的關係,當你做出下面的運算時

Sting x = "a"+"b"+"c"+"d";
JVM會產生四個String物件,所以當你有字要串起來時為了節省記憶體通常不會使用String
而會使用StringBuffer與StringBuilder
那麼StringBuffer與StringBuilder到底要選什麼用呢?首先要了解兩者的不同
StringBuffer與StringBuilder第一個不同在於兩者的效能有明顯的差距
如下面範例

public class Test {

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

        }

    }

}


那麼要建立String就用StringBuilder囉?
其實不見得
StringBuffer是synchronized,也就是在多執行緒上他比較不會發生錯誤
StringBuilder在多執行緒的程式上就必須注意Thread safe的問題

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Dnight 的頭像
    Dnight

    D奈老師的部落格

    Dnight 發表在 痞客邦 留言(0) 人氣()