为什么我在这里的第二行得到StringIndexOutOfBoundsException?

时间:2011-11-18 03:28:24

标签: java substring

为什么以下Java代码段会在第三行代码中抛出StringIndexOutOfBoundsException?

String str = "1234567890";
String sub1 = str.substring(0, 3);
String sub2 = str.substring(4, 1);

我原以为上面代码的结果是sub1包含“123”而sub2包含“5”,但我得到了上面提到的异常。第一个子字符串调用是否对正在操作的字符串有副作用?

3 个答案:

答案 0 :(得分:5)

因为beginIndex大于endIndex

请参阅doc

<强>抛出: IndexOutOfBoundsException - 如果beginIndex为负数,或者endIndex大于此String对象的长度,或者 beginIndex 更大 而不是 endIndex。

答案 1 :(得分:1)

查看docString.substring(beginIndex,endIndex)

答案 2 :(得分:0)

方法substring()的第一个参数是选择开头的索引,第二个是结束的索引,而不是您希望选择的长度,正如您显然所想的那样。

请参阅文档here