问题来源:在Java中,使用String str = “a" + "b" + “c"的时候,编译器会自动优化,使用StringBuilder来完成连接操作,那么,StringBuffer为什么比起String性能更高呢?
首先,以上字符串的连接,按照Java中字符串是常量不可更改的特性,理应是先有一个新的变量指向"a",而后再创建一个变量,指向"a + b",依次类推。但是按照这种方法,会产生很多没用的中间变量,严重影响了性能,所以实际中,编译器会自动创建StringBuilder优化性能。
StringBuilder中的append方法源码:
@Override
public StringBuilder append(String str) {
super.append(str);
return this;
}
在AbstractStringBuilder中,数据是放在一个 char[ ] value的数组里的。