黑马程序员技术交流社区

标题: 数据越界问题,求解答 [打印本页]

作者: hhj1114275454    时间: 2016-8-1 23:16
标题: 数据越界问题,求解答
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就不行了,有大神来解释下吗?
作者: 一条寂寞的鱼    时间: 2016-8-1 23:18
顶一个
作者: wyq0627java11    时间: 2016-8-1 23:24
subString ,截取的是包头不包尾的,所以就能取到6-1啊
作者: mingyeing    时间: 2016-8-1 23:35
subString(开始索引,结束索引)。表示的是包含开始索引,不包含结束索引。所以,如果你答应sb.substring(0,2),打印出来的就是12,打印的就是索引为0好索引为1的元素,而不打印索引为2的元素。sb.substring(3,6)打印的就是索引为3,4,5,的元素,不会打印索引为6的元素。
作者: lsp0523    时间: 2016-8-1 23:45
这是左包右不包原理,总共有5个元素(3,6)打印的是3,4,5 。而第6个不会打印,打印的只是6个以前的,而第6个事实上根本不存在,当你写成(3,7)的时候应为只有5个元素不可能打出第6个元素,所以越界。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2