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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 2528870651 高级黑马   /  2014-4-20 15:43  /  857 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 2528870651 于 2014-4-22 10:53 编辑
  1. char[] ch = new char[50];
  2.                         sb.getChars(0,sb.length(),ch,1);   //这里没问题
  3.                         //sb.getChars(0,sb.capacity(),ch,1);//字符串角标越界,
  4.                         //那么这个length()和capacity()有什么区别啊               
  5.                         System.out.println("sb.length() = "+sb.length());   //结果是32
  6.                         System.out.println("sb.capacity() = "+sb.capacity());  //结果34
复制代码

1 个回复

倒序浏览
  1. length()和capacity()

  2. 通过调用length()方法可以得到当前StringBuffer的长度。而通过调用capacity()方法可以得到总的分配

  3. 容量。它们的一般形式如下:
  4. int length()
  5. int capacity()
  6. 这里是一个例子:
  7. //StringBuffer length vs.capacity.
  8. class StringBufferDemo
  9. {
  10.      public static void main(String args[])
  11.      {
  12. StringBuffer sb = new StringBuffer("Hello");

  13. System.out.println("buffer = "+sb);
  14. System.out.println("length = "+sb.length);
  15. System.out.println("capacity = "+sb.capacity);
  16.      }
  17. }

  18. 下面是这个程序的输出,它说明了StringBuffer如何为另外的处理预留额外的空间:
  19. buffer = Hello
  20. length = 5
  21. capacity = 21

  22. 由于sb在创建时由字符串"Hello"初始化,因此它的长度为5。因为给16个附加的字符自动增加了存储空间,因此它的存储容量为21.
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马