如果标题不清楚,我很抱歉。字符串类中的子字符串方法达到索引它不应该
现在,串指数从0开始。因此,例如:
Index 0 1 2 3 4
String H E L L O
在这种情况下,最后指数是4
如果我想尝试做这样的事情:
System.out.println("hello".charAt(5));
它会抛出'索引超出界限例外',因为它应该。
但是,如果我尝试运行下面的代码:
System.out.println("hello".substring(5));
它跑了!我写了类似的代码,后来注意到了这一点,但无法弄清楚。
最终,问题是我们怎么可能达到这个指数呢?它可以让我们写:
stringObj.substring(stringObj.length());
,它看起来不是很安全,因为stringObj.length()返回我们一个整数,它比过去的指标是什么人了。
是故意制造的吗?这是否有目的?如果是这样,这是什么目的,它带来的好处是什么?
我们不会在“hello”.substring(5)上得到异常,但API解释我们得到“空”.substring(9)返回“”(一个空字符串)http://docs.oracle.com/ JavaSE的/ 7 /文档/ API /爪哇/郎/字符串。html#substring(int) – bakki
是的,我也检查了文档。但我不明白,它说beginIndex是包容性的。他们是如何实施这种方法的? – Haggra
'它说beginIndex是包容性的 - 当然它是包容性的。你如何得到索引为0的第一个字符?你会指定-1吗?这没有意义。将substring()方法与indexof()方法结合使用也很容易。您可以使用indexof()获取索引,使用substring()获取索引中的所有字符。 – camickr