參考來自:http://blog.csdn.net/jeffleo/article/details/52194433
1.速度
一般來說,三者的速度是:StringBuilder > StringBuffer > String。
但是,在String a = "how" + "old" + "are" + "you"。這種直接拼接的情況下,String速度最高。這是因爲jvm的優化問題,jvm會自動識別,把"how" + "old" + "are" + "you"直接當做'how old are you"。
2.String
參看前篇博文:2017.11.15 String詳解
3.StringBuilder和StringBuffer
這兩者的api實際差不多,StringBuilder是jdk1.5引入的,1.5之前只能使用StringBuffer。翻閱了兩者的源碼,看出StringBuffer是線程安全的,StringBuilder是非線程安全的。因此多線程使用StringBuilder是會出錯的。
4.三者的使用場景
String的使用場景:在字符串不常變化的情況下,例如進行字符串的複製和簡單得拼接。
StringBuffer的使用場景:在字符串經常進行運算的,且在多線程的情況下,例如xml解析和StringBuffer參數的拼接。
StringBuilder的使用場景:在字符串經常進行運算的,且在單線程的情況下,例如SQL語句的拼裝。