[十三]基础数据类型之AbstractStringBuilder

 也就意味着每次调用的各种处理方法,返回的字符串都是一个新的,性能上,显然....

所以,对于可变字符序列的需求是很明确的
 
类的层次结构设计,有的时候是自顶而下
有的时候是总结归纳,然后抽象出来一个新的类,这很正常
尽管StringBuffer 要比StringBuilder 和 AbstractStringBuilder要早得多了
但是StringBuffer 现在也继承了这个类
image_5bcd62fe_1137
所以说,抛开发展历史的过程不说,直接从类的层级结构设计的角度看的话
你可以认为AbstractStringBuilder 就是对于可变字符序列的这一概念的描述
他提供了可变字符序列的一个基本协议约定,也就是基本的功能方法
作为一个抽象类, 并且也提供了一部分默认的实现
StringBuffer和StringBuilder都是可变的字符序列,所以他们都实现了AbstractStringBuilder
image_5bcd62fe_2581
 

属性简介

内部是一个char[] value不再是final的了,也就意味着可变
他实现了CharSequence接口意味着他是一个字符序列
实现了Appendable接口,意味着他遵循了追加相关的协议
image_5bcd62fe_7963
内部使用char[] value进行数据存储 , 这个char[] value 是核心
他是有容量大小的,因为数组必然有长度
如果长度没有超出此容量,就无需分配新的内部缓冲区数组
如果内部缓冲区溢出,则此容量自动增大
 
使用count 记录已经使用的字符个数
 
还可以通过有参数的构造方法进行初始化设置value这个字符数组的大小
当然构造方法不是给你用的,是给子类用的
 
既然本质是一个char[] 字符数组,所以可以说所有的操作都是对于数组的操作
那么对于一个字符序列,有哪些方法是刚需呢?
也无外乎添加元素/删除元素/更新元素/获取元素 这几种
添加有可能是插入中间或者在最后追加
 
我们知道,数组是顺序存储
所以对于插入这种操作必然会出现大量的元素移动情况
 

属性获取

既然是内部维护了字节数组
必然这个数组本身属性,长度 ,使用个数的获取,以及数组的扩大也有相对应的方法可以使用
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信

length() 获取实际数据的个数
capacity() 数组的大小 所以是容量
image_5bcd62fe_1c6e