JDK之AbstractStringBuilder源码解读(一)

目录

 AbstractStringBuilder()

AbstractStringBuilder(int capacity)

length()

capacity()

ensureCapacity(int minimumCapacity)

trimToSize()

setLength(int newLength)


AbstractStringBuilder是一个可变的字符序列。它实现了Appendable和CharSequence接口。

Appendable接口重载了append方法,表示它的实现类是可添加CharSequence和char的。

Appendable append(CharSequence csq) throws IOException;

Appendable append(CharSequence csq, int start, int end) throws IOException;

Appendable append(char c) throws IOException;

 

而CharSequence是一个可读的char序列。

//字符序列的长度
int length();

//获取指定位置的字符
char charAt(int index);

//获取它的子序列
CharSequence subSequence(int start, int end);

除了这些方法外,JDK 1.8还加入了2个default的方法:

public default IntStream chars() {
        class CharIterator implements PrimitiveIterator.OfInt {
            int cur = 0;

            //如果当前位置不在末尾,说明hasNext为true
            public boolean hasNext() {
                return cur < length();
            }

            //获取当前位置的值
            public int nextInt() {
                if (hasNext()) {        //如果hasNext为true,则获取当前位置的值
                    return charAt(cur++);
                } else {
                    throw new NoSuchElementException();
                }
            }

            //遍历字符序列,对于每一个字符都调用accept方法
            @Override
            public void forEachRemaining(IntConsumer block) {
                for (; cur < length(); cur++) {
                    block.accept(charAt(cur));
                }
            }
        }

        //新起一个序列,利用StreamSupport.intStream方法将当前序列内容复制过去。
        return StreamSupport.intStream(() ->
                Spliterators.spliterator(
                        new CharIterator(),
                        length(),
                        Spliterator.ORDERED),
                Spliterator.SUBSIZED | Spliterator.SIZED | Spliterator.ORDERED,
                false);
    }

 

下面是AbstractStringBuilder的内容。AbstractStringBuilder的属性有两个:

//用来存放字符的数组
char[] value;

//数组中字符的总数量
int count;

 AbstractStringBuilder()

作用:无参构造函数。

AbstractStringBuilder(int capacity)

作用:创建指定容量的字符数组。

length()

作用:获取字符数量。

capacity()

作用:获取容量,也就是字符数组的大小。

ensureCapacity(int minimumCapacity)

作用:确保容量大于或等于指定的最小值。他调用了ensureCapacityInternal(minimumCapacity)方法。

扩容方法如下:

trimToSize()

作用:给字符序列缩容。

setLength(int newLength)

作用:设置字符序列的长度。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值