Java常用类 StringBuilder类详解

StringBuilder 类

底层

  • final修饰符类,不可被继承
    在这里插入图片描述

  • 含有参和无参构造器

无参 StringBuilder s2 = new StringBuilder();

底层步骤

在这里插入图片描述
调用父类构造器,默认参数为16

在这里插入图片描述
父类为AbstractStringBuilder,成员变量字符数组vlalue和整形变量count;

在这里插入图片描述

将value数组长度赋为16

有参 StringBuilder s1 = new StringBuilder(“abc”);
步骤

在这里插入图片描述
分为两大部分
首先我们看看super即调用父类构造器器
进入super(str.lenth()+16)
在这里插入图片描述
定义了一个字符长度为19(str.lenth()+16)的字符数组char;

然后我们进去append(str)
在这里插入图片描述
super.append(std)调用了父类的appernd方法
进去后
在这里插入图片描述
解释:首先定义len等于str长度即为3,然后进入 ensureCapacityInternal方法,参数3在这里插入图片描述
不满足条件,返回(其实这个函数是判断新加字符串长度是否超出19)
,然后执行
str.getChars(0, len, value, count); //将str字符串从0开始到str长度结束全部复****制到起始位置为count的字符value内

那么当str长度太大了,导致无法添加到value数组内怎么办呢?
那么就是执行ensureCapacityInternal方法
在这里插入图片描述

这个方法目的其实是扩充value数组长度,同时将原先value数组内容转移到新value内(假如是newvalue),则此时value指向另一个数组newvalue

总结;

  • SringBuilder类有两个重要的的成员变量,分别是char[] value和 int count;
  • 无参默认value长度为16
  • 有参时,vlaue长度为str.length()+16,当我们调用append方法新加字符串时,若长度超出这个原先的value长度,那么value会被扩充,扩充长度为两倍原先长度再加2;扩充后value已经不是之前那个value了;count的主要作用是起到一个标记作用,标记下一次新加字符串放入value数组的起始位置。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值