浅谈StringBuffer类初始容量及扩容
来源:互联网 发布:微信企业号java源码 编辑:程序博客网 时间:2024/06/07 02:17
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 判断一下 容量如果不够,直接扩充到需要的容量大小。
0 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的默认初始容量、加载因子、扩容增量
- Hadoop 简单介绍
- linux学习记录11月
- Android demo 项目-汇总-201611-02期
- Android开发-Retrofit-AndroidStudio(三)ListView&Picasso
- 11月15日——离noip还有4天[Black Bullet]
- 浅谈StringBuffer类初始容量及扩容
- 11E求最大公约数和最小公倍数
- Hadoop性能调优
- JRE、JDK和SDK分别是什么
- Visual Studio (VS) 操作小技巧(持续更新)
- 極座標下的histogram2d
- 腾讯云服务器上搭建mysql 如何使云数据库能外网访问
- Java 自定义标签
- 实战 :Spring MVC + 注解 +SqlServer 框架搭建及详解