StringBuffer中的length与capacity方法区别

length
返回当前长度

capacity
如果字符串长度没有初始化长度大,capacity返回初始化的长度
如果append后的字符串长度超过初始化长度,capacity返回增长后的长度

这里需要补充:
StringBuffer s = new StringBuffer(x); x为初始化容量长度
s.append(“Y”); "Y"表示长度为y的字符串
length始终返回当前长度即y;
对于s.capacity():

  • 1.当y<x时,值为x

以下情况,容器容量需要扩展

  • 2.当x<y<=2x+2时,值为 2x+2
  • 3.当y>2*x+2时,值为y

源码
在这里插入图片描述
举例:

public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringBuffer s = new StringBuffer(10);
	    s.append("12345");
	    System.out.println(s.capacity());//容量长度  c1=10
	    System.out.println(s.length());//始终返回当前长度5
	    s.append("1234567890");
	    System.out.println(s.capacity());//超越容量按照(c2=c1*2+2)
	    System.out.println(s.length());//始终返回当前长度
	    s.append("1234567890");
	    s.append("1234567890");
	    System.out.println(s.capacity());//超越c2容量长度(c3=c2*2+2)
	    System.out.println(s.length());//始终返回当前长度
	    
	}

结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40896997/article/details/89375584