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学习资料的也能够私信我!
祝关注个人人都:身体健康,财源广进,福如东海,寿比南山,早生贵子,从不掉发!