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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hhj1114275454 初级黑马   /  2016-8-1 23:16  /  513 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

StringBuffer sb = new StringBuffer("123456");
System.out.println(sb.substring(3));
System.out.println(sb.substring(3,6));
System.out.println(sb.length());

sb最大索引是5但是sb.substring(3,6)中6已经越界了却还能执行,而换成7就不行了,有大神来解释下吗?

4 个回复

倒序浏览
顶一个
回复 使用道具 举报
subString ,截取的是包头不包尾的,所以就能取到6-1啊
回复 使用道具 举报
subString(开始索引,结束索引)。表示的是包含开始索引,不包含结束索引。所以,如果你答应sb.substring(0,2),打印出来的就是12,打印的就是索引为0好索引为1的元素,而不打印索引为2的元素。sb.substring(3,6)打印的就是索引为3,4,5,的元素,不会打印索引为6的元素。
回复 使用道具 举报
这是左包右不包原理,总共有5个元素(3,6)打印的是3,4,5 。而第6个不会打印,打印的只是6个以前的,而第6个事实上根本不存在,当你写成(3,7)的时候应为只有5个元素不可能打出第6个元素,所以越界。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马