string容量JAVA_java的StringBuilder类的长度和容量有什么区别呢?

StringBuilder是使用char[] value;存储数据的

@Override

public int length() {

return count;

}

AbstractStringBuilder(int capacity) {

value = new char[capacity];

}

长度表示的是字符的个数,容量表示的是可用于最新插入字符的存储量。

例如:

StringBuilder sb=new StringBuilder();

sb.append("666");

sb.setLength(2);

System.out.println(sb.length());//追加了长度为3的字符串,count=count+3,所以结果为3

System.out.println(sb.capacity());//调用父类构造器super(16);即是new char[16],所以结果16

String s=sb.toString();

System.out.println(s);

public void setLength(int newLength) {

if (newLength < 0)

throw new StringIndexOutOfBoundsException(newLength);

ensureCapacityInternal(newLength);

if (count < newLength) {

Arrays.fill(value, count, newLength, '\0');

}

count = newLength;

}

执行sb.setLength(2);char[]数组内容没有变化,下标0,1,2还是存储6,6,6

就是把count值设置为2而已,下面调用toString();方法重新构造一个String对象,char数组存储6,6

如果设置sb.setLength(4);构造新的String对象,最后一个补上'0'。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值