Java String索引超出界限

时间:2016-02-26 21:52:40

标签: java arrays string indexoutofboundsexception

假设我有一个

String temp = "abcd";

System.out.println(temp.substring(0,4)); // out of bound, no error
System.out.println(temp.substring(0,5)); // out of bound, error

为什么呢?

4 个答案:

答案 0 :(得分:3)

Javadocs for this method州:

  

子字符串从指定的beginIndex开始,并扩展到索引endIndex - 1处的字符。

     

<强>抛出:

     

IndexOutOfBoundsException - 如果beginIndex为负数,或者endIndex大于此String对象的长度,或者beginIndex大于endIndex。

length的结束索引没问题,但length + 1不是。

答案 1 :(得分:1)

根据docs

public String substring(int beginIndex, int endIndex)

  

子字符串从指定的beginIndex开始,并扩展到索引endIndex - 1处的字符。

     

IndexOutOfBoundsException - 如果beginIndex为否定,或endIndex大于此String对象的长度,或beginIndex大于endIndex

System.out.println(temp.substring(0,5));开始,其中5&gt;字符串的长度(abcd),因此是例外。

答案 2 :(得分:0)

因为子字符串以endIndex-1结束。

答案 3 :(得分:0)

子串(0,4)不考虑0到4.它考虑0到3.第二个索引总是减1.在第二种情况下,temp [4]超出范围。