【Ali规约】循环体内的字符串连接方式使用 StringBuilder 的 append 方法进行拓展

原因
若不使用 StringBuilder 的 append 方法而使用 + 来进行连接。那么每次在循环体内都将会在 Heap 中创造一个新的 String 对象,造成资源浪费。使用 StringBuilder 数据类型则能够有效避免浪费。对比 String 与 StirngBuilder 的源码。
源码
String

    private final char value[];
    // 本质是字符数组常量,所以不可变
    public String() {
        this.value = "".value;
    }

StringBuilder

    public StringBuilder() {
        // StringBuilder 类继承 AbstractStringBuilder 抽象类
        // 创建长度 16 的字符数组
        super(16);
    }
    // 字符串拼接
    public StringBuilder(String str) {
        super(str.length() + 16);
        append(str);
    }

AbstractStringBuilder

   // 没有 final 关键字修饰,字符数组长度可变
   // 这也就是为什么 StringBuffer 与 StringBuilder 的数组可变的原因
   AbstractStringBuilder(int capacity) {
        value = new char[capacity];
    }
发布了104 篇原创文章 · 获赞 264 · 访问量 54万+

猜你喜欢

转载自blog.csdn.net/teavamc/article/details/90702562