最近犯了一个很基础的错误,就是在for循环中拼接字符串直接用了+=这种形式,然后就被同事说了一顿,因为效率太慢了,那个for循环的量级可是百万级的。直接上一段类似代码:
public class stringBufferTest {
public static void main(String[] args) {
// String a = "";
// for (int i = 0; i < 100000; i++) {
// a += "111";
// }
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < 100000; i++) {
stringBuffer.append("111");
}
}
}
效率差自己运行体会吧。
具体原因是因为+=这种形式会导致在每一次拼接的时间重新创建一个字符串对象,创建对象比较花时间,而StringBuffer不会创建。
PS:
有时间看看StringBuffer的源码。