此代码......
public String a() {
String x = "abc";
String y = x.substring(3,3);
return y; //returns : ""
}
工作没有错误,但我认为该字符串没有第三个索引。我理解第一个字符串的字符串索引是0索引,第二个字符1索引,它就是那样。那么为什么不给我一个错误比如“OutOfBoundsException”?
答案 0 :(得分:0)
来自文档:
IndexOutOfBoundsException - 如果beginIndex为负数或endIndex 大于此String对象的长度,或者beginIndex是 大于endIndex。
这些条件均未得到满足。
答案 1 :(得分:0)
查看代码,您将看到它不符合异常
的要求 public String substring(int beginIndex, int endIndex) {
if (beginIndex < 0) {
throw new StringIndexOutOfBoundsException(beginIndex);
}
if (endIndex > value.length) {
throw new StringIndexOutOfBoundsException(endIndex);
}
int subLen = endIndex - beginIndex;
if (subLen < 0) {
throw new StringIndexOutOfBoundsException(subLen);
}
return ((beginIndex == 0) && (endIndex == value.length)) ? this
: new String(value, beginIndex, subLen);
}