共同学习Java源代码--常用工具类--AbstractStringBuilder(四)

来源:互联网 发布:换手率软件怎么用 编辑:程序博客网 时间:2024/06/10 03:00
    public AbstractStringBuilder append(CharSequence s, int start, int end) {
        if (s == null)
            s = "null";
        if ((start < 0) || (start > end) || (end > s.length()))
            throw new IndexOutOfBoundsException(
                "start " + start + ", end " + end + ", s.length() "
                + s.length());
        int len = end - start;
        ensureCapacityInternal(count + len);
        for (int i = start, j = count; i < end; i++, j++)
            value[j] = s.charAt(i);
        count += len;
        return this;
    }
这个方法传入三个参数,一个是CharSequence的实现类对象s,一个是起始下标,最后一个是结束下标。
先判断s是否为空,如果为空,则将s赋值为"null"。
再判断参数中两个下标是否越界,越界就抛出异常。
然后创建变量len,其值为下标之差。接下来给value扩容。
然后进入for循环,将s中的每一个元素追加在value之后,count进行自增。
返回本字符串对象。
    public AbstractStringBuilder append(char[] str) {
        int len = str.length;
        ensureCapacityInternal(count + len);
        System.arraycopy(str, 0, value, count, len);
        count += len;
        return this;
    }
这个方法传入一个数组,实现原理和上面的很类似,就是先将value扩容,然后进行数组拷贝。最后返回本对象。
    public AbstractStringBuilder append(char str[], int offset, int len) {
        if (len > 0)                // let arraycopy report AIOOBE for len < 0
            ensureCapacityInternal(count + len);
        System.arraycopy(str, offset, value, count, len);
        count += len;
        return this;
    }
这个方法和上面的很像,就是将offset作为参数字符数组的起始下标,将len作为复制的长度,然后进行数组拷贝,最后返回本对象。
    public AbstractStringBuilder append(boolean b) {
        if (b) {
            ensureCapacityInternal(count + 4);
            value[count++] = 't';
            value[count++] = 'r';
            value[count++] = 'u';
            value[count++] = 'e';
        } else {
            ensureCapacityInternal(count + 5);
            value[count++] = 'f';
            value[count++] = 'a';
            value[count++] = 'l';
            value[count++] = 's';
            value[count++] = 'e';
        }
        return this;
    }
这个方法就是拼接布尔值,将布尔值拼成字符串。
    public AbstractStringBuilder append(char c) {
        ensureCapacityInternal(count + 1);
        value[count++] = c;
        return this;
    }
这个方法是拼接字符。就是将参数放到扩容后的value的最后。
0 0