浅谈StringBuffer类初始容量及扩容
来源:互联网 发布:grub命令行引导ubuntu 编辑:程序博客网 时间:2024/06/06 19:41
StringBuffer类可以创建可修改的字符串序列。该类有StringBuffer(),StringBuffer(int size),StringBuffer(String s)三个改造方法。
1.StringBuffer()的初始容量可以容纳16个字符,当该对象的实体存放的字符的长度大于16时,实体容量就自动增加。StringBuffer对象可以通过length()方法获取实体中存放的字符序列长度,通过capacity()方法来获取当前实体的实际容量。
2.StringBuffer(int size)可以指定分配给该对象的实体的初始容量参数为参数size指定的字符个数。当该对象的实体存放的字符序列的长度大于size个字符时,实体的容量就自动的增加。以便存放所增加的字符。
3.StringBuffer(String s)可以指定给对象的实体的初始容量为参数字符串s的长度额外再加16个字符。当该对象的实体存放的字符序列长度大于size个字符时,实体的容量自动的增加,以便存放所增加的字符。
接下来介绍StringBuffer()怎样扩容:
首先我们需要知道StringBuffer和StringBuilder类都继承了抽象类AbstractStringBuilder类;
源码都调用父类来进行初始化:
StringBuffer(String s)的初始化:
扩容算法:
使用append()方法在字符串后面追加东西的时候,如果长度超过了该字符串存储空间大小了就需要进行扩容:构建新的存储空间更大的字符串,将久的复制过去;
再进行字符串append添加的时候,会先计算添加后字符串大小,传入一个方法:ensureCapacityInternal 这个方法进行是否扩容的判断,需要扩容就调用expandCapacity方法进行扩容:
尝试将新容量扩为大小变成2倍+2 if 判断一下 容量如果不够,直接扩充到需要的容量大小。
1 0
- 浅谈StringBuffer类初始容量及扩容
- 浅谈StringBuffer类初始容量及扩容
- ArrayList的默认初始容量及扩容
- ArrayList的默认初始容量及扩容
- 关于ArrayList的初始容量以及扩容的效率问题
- 关于ArrayList的初始容量以及扩容的效率问题
- 关于ArrayList的初始容量以及扩容的效率问题
- 关于ArrayList的初始容量以及扩容的效率问题
- 集合的默认初始容量、加载因子、扩容增量
- 常用集合的默认初始容量和扩容的原因
- 集合的默认初始容量、加载因子、扩容增量
- StringBuffer扩容
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量底层原理
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- 前端常见图片格式整理
- C++拷贝构造函数(深拷贝,浅拷贝)
- 仿UC的菜单弹出,布局半透明,控件不受影响。
- C++类构造函数初始化列表
- iOS自定义组件-扇形进度视图
- 浅谈StringBuffer类初始容量及扩容
- 线程阻塞状态实例分析
- Notification使用以及PendingIntent.getActivity()
- 无线通信原理及协议栈(ZigBee、蓝牙等)解析
- ionic-Android-icon图标-splash启动页-常用尺寸(像素)
- 小小的我,大大的梦想
- 调试 Segmentation fault 问题
- NYOJ——239月老的难题(二分图最大匹配)
- C++引用与指针/值传递的比较