java字符串拼接的幾種方式java
1、 + 方式安全
String str1="hello";多線程
String str2="world";併發
String str=str1+str2;app
2. concat方式性能
當兩個量都爲String類型且值不爲null時,能夠用concat方式學習
String a="a";優化
String b="b";ui
String c= a.concat(b);spa
理論上,此時拼接效率應該最高,由於已經假定兩個量都爲字符串,作底層優化不須要額外判斷或轉換,而其餘方式不管如何優化,都要先走到這一步。
3. append方式
當須要拼接至少三個量的時候,能夠考慮使用StringBuffer#append()以免臨時字符串的產生
StringBuffer buf=new StringBuffer()
buf.append("a");
if(someCondition){
buf.append("b");
}
buf.append("c");
String d=buf.toString();
當a,b,c拼接起來會很長時,能夠給在構造器中傳入一個合適的預估容量以減小因擴展緩衝空間而帶來的性能開銷。
StringBuffer buf=new StringBuffer(a.length()+b.length()+c.length());
JDK對外提供的一些涉及可append CharSequence的參數或返回值類型每每是StringBuffer類型,畢竟安全第一,而StringBuffer大多數狀況(包括append操做)線程安全。
若不會出現多線程同時對一實例併發進行append操做,建議使用非線程安全的StringBuilder以得到更好性能
4. 其餘
若需拼接至少三個量,只用一個連續拼接的語句就可完成時,從使代碼簡潔角度考慮,用plus方式。
String a="a";
String b="b";
String c="c";
String d=a+b+c;
此時,第4句經JDK編譯後其字節碼(或)會自動優化爲等效於下列代碼編譯後的字節碼。
String d=new StringBuilder().append(a).append(b).append(c).toString();
若採用模板+參數來替換佔位符的方式或需同時對要拼接日期/數字進行格式化,能夠用String.format()來實現。
喜歡這樣文章的能夠關注我,我會持續更新,大家的關注是我更新的動力!須要更多java學習資料的也能夠私信我!
祝關注個人人都:身體健康,財源廣進,福如東海,壽比南山,早生貴子,從不掉髮!