当两个变量都为String类型且值不为null时,可以用concat方式。
String str1 = "abc";String str2 = "def";String result = str1.concat(str2);理论上,此时拼接效率应该最高,因为已经假定两个量都为字符串,做底层优化不需要额外判断或转换,而其他方式无论如何优化,都要先走到这一步。
2.append方法当需要拼接至少三个量的时候,可以考虑使用StringBuffer.append()以避免临时字符串的产生
StringBuffer buffer = new StringBuffer();buffer.append("a");buffer.append("b");buffer.append("c");System.out.println(buffer.toString());当a,b,c拼接起来会很长时,可以给在构造器中传入一个合适的预估容量以减少因扩展缓冲空间而带来的性能开销。
StringBuffer buffer=new StringBuffer(a.length()+b.length()+c.length());JDK对外提供的一些涉及可append CharSequence的参数或返回值类型往往是StringBuffer类型,毕竟安全第一,而StringBuffer大多数情况(包括append操作)线程安全。
若不会出现多线程同时对一实例并发进行append操作,建议使用非线程安全的StringBuilder以获得更好性能
3.使用+拼接当拼接量为三个及以上,只用一个连续拼接的语句就可完成时,从使代码简洁角度考虑,用+方式。
String a="a";String b="b";String c="c";String result=a+b+c;此时,第4句经JDK编译后其字节码(或)会自动优化为等效于下列代码编译后的字节码。
String result=new StringBuilder().append(a).append(b).append(c).toString();此文为参考整理文章,原文链接如下:
1.https://blog.csdn.net/fei7837226/article/details/79377906
2.https://zhidao.baidu.com/question/810337957202747532.html