晚上做一个习题,发现了一个关于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还要加油学习!!!自勉~