zoukankan      html  css  js  c++  java
  • 关于StringBuffe()长度和初始化长度的问题归纳

    晚上做一个习题,发现了一个关于StringBuffer()长度的问题

    根据理解大致可以归为以下知识。

    直接上代码分析吧

     1 public class StringBuffer_length_capacity {
     2     public static void main(String[] args) {
     3         //注意StringBuffer默认长度为16
     4         StringBuffer s1 = new StringBuffer(1);
     5         //取值为1,初始化长度4   取值为2,初始化长度6, 取值为3,初始化长度为8,取值为4,初始化长度为
     6         //若StringBuffer中设置的长度小于我们的字符串长度,此时容器需要扩容,
     7         s1.append("12345");
     8         System.out.println("长度:"+s1.length());
     9         System.out.println("初始化长度:"+s1.capacity());
    10         }
    11     }

    假设我们的StringBuffer初始默认长度为x,我们所给的字符串长度为y

    则可得,我们的s1.length返回的长度为x

    当涉及到capacity()时候,我们需要判断

    首先1.当y<=x时:capacity取值为x

    2.当y>x时:此时我们的容器需要发生扩容

        a.如果y>2*x+2,此时s1.capacity() = s1.length();

        b.如果y≤2*x+2,可以得到此时s1.capacity = 2*x+2

    tips:StringBuffer和StringBuilder在没有初始化长度的时候,长度为16

    继续学习,js还要加油学习!!!自勉~

  • 相关阅读:
    将已排序的数组乱序
    Roadmap!!
    测试
    最大对称字串
    约瑟夫环问题
    大家好
    MYSQL数据库导入SQL文件出现乱码如何解决
    Hibernate缓存
    Spring备忘四(涵盖Spring2.5)
    Struts2 Hello,Wold
  • 原文地址:https://www.cnblogs.com/caoxixi/p/9892973.html
Copyright © 2011-2022 走看看