为什么java substring方法像这样工作?

qwe*_*ert 5 java string

这可能有一个非常明显的答案,但是我刚刚开始学习Java并发现了这一点。

说我们有

String x = "apple";
Run Code Online (Sandbox Code Playgroud)

为什么x.substring(5)返回"",并在x.substring(6)引发IndexOutOfBounds异常时为空字符串?是否可以在每个字符串后面附加某种空字符串?只是不确定它是如何工作的。

谢谢!

Pre*_*159 3

Java 子字符串接受值0通过variable.length(包括)。它这样工作的原因似乎是使结果字符串的长度为endIndex-beginIndex

我选择认为给出的数字不是指字符的位置,而是指字符之间点的位置。例如:

0 :a: 1 :p: 2 :p: 3 :l: 4 :e: 5
Run Code Online (Sandbox Code Playgroud)

5返回一个空字符串,因为后面没有字符。

6抛出异常,因为没有第六个位置。