假设我有一个
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
为什么呢?
答案 0 :(得分:3)
子字符串从指定的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]超出范围。