zoukankan      html  css  js  c++  java
  • StringBuffer的s1.capacity()是多少?

    定义有StringBuffer s1=new StringBuffer(10);s1.append(“1234”)则s1.length()和s1.capacity()分别是多少?

    StringBuffer s = new StringBuffer(x);  x为初始化容量长度
    s.append("Y"); "Y"表示长度为y的字符串
    length始终返回当前长度即y;
    对于s.capacity():
    1.当y<x时,值为x
    以下情况,容器容量需要扩展
    2.当x<y<2*x+2时,值为 2*x+2
    3.当y>2*x+2时,值为y

    1.length 返回当前长度
    2.如果字符串长度没有初始化长度大,capacity返回初始化的长度
    以上两点没有问题。

    对于第三点:3.如果append后的字符串长度超过初始化长度,capacity返回增长后的长度
    这个观点不够完整,我作一些小小的补充。
    首先,我们先看源码。我们看StringBuffer 的 append的操作后,对capacity的影响是怎样的



    首先,我们可以看到,如果append后的字符串长度超过初始化长度,它会先将初始化的容量翻倍再+2.
    如图:  int newCapacity = value.length * 2 + 2 ;
    在初始化容量增长过一次之后,仍然不够用的话,就会用 append后的字符串长度作为新的容量。
  • 相关阅读:
    冒泡排序
    选择排序
    JavaScript学习笔记---数组对象
    数字时钟
    操作字符串
    当前时间
    倒计时 定时器
    滚动文字
    查找替换文字
    JavaScript学习笔记---对象 时间对象 字符串对象
  • 原文地址:https://www.cnblogs.com/zhuyeshen/p/11017251.html
Copyright © 2011-2022 走看看