A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© william_J 中级黑马   /  2014-11-22 20:34  /  7254 人查看  /  35 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币
StringBuffer类有两个属性分别为 length 和 capacity
请问这两个有什么区别啊?

最佳答案

查看完整内容

length(),返回长度(字符数)。capacity(),返回当前容量。

35 个回复

倒序浏览
length(),返回长度(字符数)。capacity(),返回当前容量。
回复 使用道具 举报
  1. length()和capacity()  
  2.   
  3. 通过调用length()方法可以得到当前StringBuffer的长度。而通过调用capacity()方法可以得到总的分配  
  4.   
  5. 容量。它们的一般形式如下:  
  6. int length()  
  7. int capacity()  
  8. 这里是一个例子:  
  9. //StringBuffer length vs.capacity.   
  10. class StringBufferDemo  
  11. {  
  12.      public static void main(String args[])  
  13.      {  
  14. StringBuffer sb = new StringBuffer("Hello");  
  15.    
  16. System.out.println("buffer = "+sb);  
  17. System.out.println("length = "+sb.length);  
  18. System.out.println("capacity = "+sb.capacity);  
  19.      }  
  20. }  
  21.   
  22. 下面是这个程序的输出,它说明了StringBuffer如何为另外的处理预留额外的空间:  
  23. buffer = Hello  
  24. length = 5  
  25. capacity = 21  
  26.   
  27. 由于sb在创建时由字符串"Hello"初始化,因此它的长度为5。因为给16个附加的字符自动增加了存储空间,因此它的存储容量为21.  
复制代码
回复 使用道具 举报
  1. length()和capacity()  
  2.   
  3. 通过调用length()方法可以得到当前StringBuffer的长度。而通过调用capacity()方法可以得到总的分配  
  4.   
  5. 容量。它们的一般形式如下:  
  6. int length()  
  7. int capacity()  
  8. 这里是一个例子:  
  9. //StringBuffer length vs.capacity.   
  10. class StringBufferDemo  
  11. {  
  12.      public static void main(String args[])  
  13.      {  
  14. StringBuffer sb = new StringBuffer("Hello");  
  15.    
  16. System.out.println("buffer = "+sb);  
  17. System.out.println("length = "+sb.length);  
  18. System.out.println("capacity = "+sb.capacity);  
  19.      }  
  20. }  
  21.   
  22. 下面是这个程序的输出,它说明了StringBuffer如何为另外的处理预留额外的空间:  
  23. buffer = Hello  
  24. length = 5  
  25. capacity = 21  
  26.   
  27. 由于sb在创建时由字符串"Hello"初始化,因此它的长度为5。因为给16个附加的字符自动增加了存储空间,因此它的存储容量为21.  
复制代码
回复 使用道具 举报
通过调用length()方法可以得到当前StringBuffer的长度。而通过调用capacity()方法可以得到总的分配  
  
容量。它们的一般形式如下:  
int length()  
int capacity()  
这里是一个例子:  
//StringBuffer length vs.capacity.   
class StringBufferDemo  
{  
     public static void main(String args[])  
     {  
 StringBuffer sb = new StringBuffer("Hello");  
   
 System.out.println("buffer = "+sb);  
 System.out.println("length = "+sb.length);  
 System.out.println("capacity = "+sb.capacity);  
     }  
}  
  
下面是这个程序的输出,它说明了StringBuffer如何为另外的处理预留额外的空间:  
buffer = Hello  
length = 5  
capacity = 21  
  
由于sb在创建时由字符串"Hello"初始化,因此它的长度为5。因为给16个附加的字符自动增加了存储空间,因此它的存储容量为21.  
回复 使用道具 举报
zbt 中级黑马 2014-11-23 20:01:33
地板
length是返回实际的字符长度,而capacity则是返回其字符串的理论长度。一般capacity = length + 16;
回复 使用道具 举报
yfdsn 初级黑马 2014-11-24 13:23:42
7#
capacity是指现在开char[]的容量
length是指已经放入char[]的字符个数
回复 使用道具 举报
length()是当前缓冲区的的字符数,capacity()是当前缓冲区的容量
回复 使用道具 举报
public int length()  字符个数  实际长度
public  int  capacity  ()字符容量  理论长度(16)
回复 使用道具 举报
陌莫 初级黑马 2014-11-27 09:49:18
10#
通过调用length()方法可以得到当前StringBuffer的长度。而通过调用capacity()方法可以得到总的分配
回复 使用道具 举报
本帖最后由 yuanlingqi 于 2014-11-29 11:12 编辑

看了楼上几个回复没一个是准确的。
length,返回当前已存字符长度没什么疑问。
capacity,方法说明如下:
Returns the current capacity. The capacity is the amount of storage available for newly inserted characters, beyond which an allocation will occur.
Overrides: capacity() in AbstractStringBuilder
Returns:
the current capacity

这段话的意思是capacity返回stringbuffer的当前容量,这个容量为剩余可插入新字符的空间总量,说白了就剩余空间,因为stringbuffer每次初始化都是按一定长度初始化的,这是为了避免空间浪费。当新插入的字符长度超过剩余容量时候,这个stringbuffer就会重新初始化出新的内存来存储。

回复 使用道具 举报
length()是当前缓冲区的的字符数,capacity()是当前缓冲区的容量
回复 使用道具 举报
  1. public class StringBufferTest
  2. {
  3.         public static void main(String[] args) {
  4.                
  5.                 StringBuffer sb = new StringBuffer();

  6.                 System.out.println("这表示sb的当前长度:"+sb.length());

  7.                 System.out.println("这表示sb的当前容量"+sb.capacity());

  8.         }
  9. }
复制代码
回复 使用道具 举报
length()和capacity() 通过调用length()方法可以得到当前StringBuffer的长度。而通过调用capacity()方法可以得到总的分配容量
回复 使用道具 举报
zrl 中级黑马 2014-12-10 17:03:59
15#
capacity是指现在开char[]的容量 length是指已经放入char[]的字符个数 永远length<=capacity
回复 使用道具 举报
沙子 中级黑马 2014-12-12 21:14:32
16#
length()方法返回的是放入Buffer 的String的长度。capacity()则是返回字符串的理论长度。
回复 使用道具 举报

length()返回缓冲区长度。capacity(),返回缓冲区容量。
回复 使用道具 举报
capacity是指现在开char[]的容量
length是指已经放入char[]的字符个数
永远length<=capacity
16参考new StringBuffer()
回复 使用道具 举报
length()字符数长度,capacity()分配容量,后者是碗,前者是水
回复 使用道具 举报
打个比方,一个杯子最多能装1升水,1升就是它的容量,现在往杯子里倒入0.5升水,0.5升就是它的长度。那StringBuffer里的capacity()是空间最多可以存储的字符数,超过这一capacity就需要再次进行分配,length()就是当前存放的字符个数。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马