黑马程序员技术交流社区
标题:
这个方法怎么报错是因为啥
[打印本页]
作者:
企鹅1号
时间:
2016-10-2 12:14
标题:
这个方法怎么报错是因为啥
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("12345678");
sb.insert(21,"afsdfee"); //报错角标越界
System.out.println(sb.capacity()); //24
System.out.println(sb);
}
sb.insert(21,"afsdfee");
传的长度是缓冲加实际长度,还是实际长度?
作者:
Jerry007
时间:
2016-10-2 13:21
public StringBuffer insert(int offset,String str);
在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
你的字符串长度才8,索引最大为7,插入肯定报错,索引越界异常
作者:
边_城
时间:
2016-10-2 14:32
楼上已经解释了
作者:
&天马星空ぁ
时间:
2016-10-2 15:05
插入的位置 最小为0 最大为长度 不是最大索引 不信你可以试试
作者:
hysnxdss
时间:
2016-10-2 17:28
capacity()方法是缓冲区的理论容量,初始长度为16,加上构造方法中的字符串长度就是24,,,,,,,(没什么用,记住初始长度16就行啦),,而字符串的实际长度只用8
作者:
Jarc
时间:
2016-10-4 14:04
长度和大小是有区别的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2