StringBuilder 与 StringBuffer之默认大小与扩容

2022-07-13 08:37:59

1、StringBuilder 与 StringBuffer

StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

2、区别

StringBuffer 和 StringBuilder 区别在于,StringBuffer 是线程安全,StringBuilder 反之。

3、初始化大小

这里以StringBuffer说明。

构造方法:

StringBuffer();

StringBuffer(String str)

StringBuffer(CharSequence seq)

StringBuffer(int capacity)

3.1 写法一

StringBuffer sb = new StringBuffer();

sb.append("java");

实例化时,初始化大小容量为16

append方法时,会有容量大小的判断。

如果append添加字符长度大于初始化容量16,则按新算法计算容量大小

如果append的字符串长度超过16,则容量为34 (34=16 * 2 + 2)

要是append的字符串长度超过16,并且大于34,则直接为字符串需要的长度。

3.2 写法二

StringBuffer sb = new StringBuffer("java");

StringBuffer(CharSequence seq)

与写法一区别

实例化时,初始化大小容量为 (实例化参数字符串的长度+ 16),其它逻辑与写法一相同。

3.3 写法三

StringBuffer sb = new StringBuffer(20);

与写法一区别

实例化时,初始化大小容量为 (自定义大小),其它逻辑与写法一相同。

  • 作者:2014Team
  • 原文链接:https://blog.csdn.net/u012965203/article/details/91823323
    更新时间:2022-07-13 08:37:59