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的問題
 
沒有留言:
張貼留言