String拼接优化为StringBuilder.append

从jdk 5开始,Java就对String字符串的+操作进行了优化,该操作编译成字节码文件后会被优化为StringBuilder的append操作。

StringBuilder.append源码

 @Override
    public StringBuilder append(Object obj) {
        return append(String.valueOf(obj));
    }

String.valueOf源码

    public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }

所以,循环内String+常量的话会每次new一个StringBuilder,再调用append方法。而调用append方法之前首先要调用String.valueOf()也就是调用toString方法;

String拼接优化为StringBuilder.append_第1张图片

你可能感兴趣的:(java,Java学习·)