java中字符串索引的边界

时间:2017-06-29 00:16:27

标签: java substring indexoutofboundsexception

此代码......

public String a() {
String x = "abc";
String y = x.substring(3,3);
return y; //returns : "" 
}

工作没有错误,但我认为该字符串没有第三个索引。我理解第一个字符串的字符串索引是0索引,第二个字符1索引,它就是那样。那么为什么不给我一个错误比如“OutOfBoundsException”?

2 个答案:

答案 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);
}