2016年10月10日 星期一

String VS. StringBuffer VS. StringBuilder

1.參考來源:
- http://blog.xuite.net/jane17512001/PenguinDesign/116288109-%E5%AD%97%E4%B8%B2%E8%99%95%E7%90%86(String%E3%80%81StringBuilder%E3%80%81StringBuffer)

- http://puremonkey2010.blogspot.tw/2011/11/java-string-stringbuffer-stringbuilder.html

2.特性介紹:
- String
每次對 String 類型進行改變的時候其實都等同於生成了一個新的 String 對象,然後將指針指向新的 String 對象,所以經常改變內容的字符串最好不要用 String ,因為每次生成對像都會對系統性能產生影響

- StringBuffer
每次結果都會對 StringBuffer 對象本身進行操作,而不是生成新的對象,再改變對象引用。所以在一般情況下我們推薦使用 StringBuffer 
(Java.lang.StringBuffer 可將字符串緩衝區安全地用於多個線程。可以在必要時對這些方法進行同步)

-StringBuilder
從 JDK 5.0 開始,為該類增添了一個單個線程使用的等價類,即 StringBuilder 。與 StringBuffer 相比,通常應該優先使用 StringBuilder 類,因為它支持所有相同的操作,但由於它不執行同步,所以速度更快!

3.結論(效率)
1.在大部分情況下 StringBuffer > String 
例外情況:
- String 較快
String S1 = "This is only a" + "simple" + "test";  
- String 較慢
String S2 = "This is only a";  
String S3 = "simple";  
String S4 = "test";  
String S1 = S2 +S3 + S4;

2.在不考慮多執行緒的情況下 StringBuilder > StringBuffer ,因為它支持所有相同的操作,但由於它不執行同步,所以速度更快!

沒有留言:

張貼留言