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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 企鹅1号 中级黑马   /  2016-10-2 12:14  /  1329 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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");
传的长度是缓冲加实际长度,还是实际长度?

5 个回复

倒序浏览
public StringBuffer insert(int offset,String str);
在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
你的字符串长度才8,索引最大为7,插入肯定报错,索引越界异常
回复 使用道具 举报
回复 使用道具 举报
插入的位置  最小为0  最大为长度  不是最大索引  不信你可以试试
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
capacity()方法是缓冲区的理论容量,初始长度为16,加上构造方法中的字符串长度就是24,,,,,,,(没什么用,记住初始长度16就行啦),,而字符串的实际长度只用8
回复 使用道具 举报
长度和大小是有区别的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马