为什么没有为“子字符串(startIndex,endIndex)”抛出“超出范围”
在Java中,我正在使用该方法,我不确定为什么它没有抛出“索引不足”错误。substring()
该字符串的索引从 0 开始到 4,但该方法将 startIndex 和 endIndex 作为参数,基于我可以调用 foo.substring(0) 并获取 “abcde” 的事实。abcde
substring()
那么子字符串(5)为什么工作呢?该指数应该超出范围。这是什么解释?
/*
1234
abcde
*/
String foo = "abcde";
System.out.println(foo.substring(0));
System.out.println(foo.substring(1));
System.out.println(foo.substring(2));
System.out.println(foo.substring(3));
System.out.println(foo.substring(4));
System.out.println(foo.substring(5));
此代码输出:
abcde
bcde
cde
de
e
//foo.substring(5) output nothing here, isn't this out of range?
当我用6替换5时:
foo.substring(6)
然后我得到错误:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: -1