Java字符串的拼接方式和效率比较

在Java中,对于字符串的拼接操作,有以下几种方式,分别是 String中的“+”、concat()方法,StringUtils.join()方法,StringBuffer中的append()方法,StringBuilder中的append()方法。

String中的“+”运算符如下所示:
Java字符串的拼接方式和效率比较
String中的concat()方法如下所示:
Java字符串的拼接方式和效率比较
StringUtils.join()方法如下所示:
Java字符串的拼接方式和效率比较
StringBuffer中的append()方法如下所示:
Java字符串的拼接方式和效率比较
StringBuilder中的append()方法如下所示:
Java字符串的拼接方式和效率比较

1、用+的方式效率最差,concat由于是内部机制实现,比+的方式好很多。
2、Join和StringBuffer比较,相差不大,join的方式要更快,可见这种JavaScript 快速拼接字符串的的方式在Java 中也非常适用
3、StringBuilder的速度是最快的,但是线程不安全的。StringBuffer的速度其次,时线程安全的。
4、在编译阶段就能够确定的字符串常量,完全没有必要创建String对象或者StringBuffer对象。直接使用字符串变量的”+”连接操作效率最高(如:String str=“a”+”b”+”c”)。

补充
1、每次调用concat()方法就是一次数组的拷贝,虽然在内存中是我的处理都是原子性操作,速度非常快,但是,最后return语句回创建一个新String对象,限制了concat方法的速度。
2、StringBuffer和StringBuilder的append()方法都是继承自AbstractStringBuilder,整个逻辑都只做字符数组的加长,拷贝,到最后也不会创建新的String对象,所以速度很快。