String StringBuilder StringBuffer三者的特點與及速度闡述

String StringBuilder StringBuffer

第1點 String是一個字符串常量,所以他是不可變的。
第2點 StringBuilder線程不安全,但是速度最快。

第3點 StringBuilde線程安全, 但是速度上會比StringBuilder慢,但還是比String快。

對應第1點的例子:

1   String firstString = "abc";
2   firstString = firstString + "1";

這種情況下第二行代碼中的第一個firstString和第二個firstString就不是同一個變量了,實質上它等價於:

2   String firstString = firstString + "1";

沒錯,系統內部又新建了一個firstString,所以這就是他慢的原因。
但是在這種特殊情況下不會受影響:

1   String firstString = "abc" + "d" +"e";

這種情況下實質上等價於:

1   String firstString = "abcde";

對應第2,3點例子:

1 String a = "abc",String b="cde";

2 String firstString = a+b;

3 StringBuilder firstStringBuilder = new StringBuilder();
4 firstStringBuilder.append(a).append(b);//通過firstStringBuilder.toString()方法使用

5 StringBuffer firstStringBuffer = new StringBuffer();
6 firstStringBuffer.append(a).append(b);//通過firstStringBuffer.toString()方法使用

第2、4、6行代碼就是他們合併代碼,最快是StringBuilder,然後到StringBuffer再到String。


所以總結以下:

1.如果要操作少量的數據用 String ,這性能影響也不大。

2.如果單線程下操作大量數據用 StringBuilder,單線程不用考慮線程安全問題,且這個速度快。

3.如果是多線程操作字符串緩衝區下操作大量數據用 StringBuffer,速度稍慢點,但安全保障。

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