Java字符串的拼接方式和效率比较
在Java中,对于字符串的拼接操作,有以下几种方式,分别是 String中的“+”、concat()方法,StringUtils.join()方法,StringBuffer中的append()方法,StringBuilder中的append()方法。
String中的“+”运算符如下所示:
String中的concat()方法如下所示:
StringUtils.join()方法如下所示:
StringBuffer中的append()方法如下所示:
StringBuilder中的append()方法如下所示:
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对象,所以速度很快。