java - 为什么这不是运行时错误

标签 java

substring 返回一个从指定索引号开始一直到结尾的字符串。 你能告诉我为什么以下不是运行时错误吗?

String s = "你好"; s.substring(5);

字符串的长度是 5 但最后一个索引是 4 那么为什么我没有得到范围的异常?当我说 s.substring(6);

时,我得到了一个

请帮忙!

最佳答案

如果您在最后一个索引之上调用索引 1,

s.substring() 实际上不会抛出方法。这非常有用,因为这样您就不必担心这样的 forloops:

for(int i = 0; i < string.length - 1; i++) {
    System.out.println(s.substring(i, i+1));
}

不需要对最后一个索引进行特殊检查,它会正常工作。

你可以看到 Java Docs对于更技术性的答案 - s.substring() 只会在索引大于字符串的 LENGTH 时抛出错误,而不仅仅是索引的数量。

参见 this question了解更多信息。

关于java - 为什么这不是运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27339873/

相关文章:

java - 为什么我收到此错误 "Unbound XML namespace prefix"

java - Spring MongoDB 查询正则表达式

Java:在哪里可以找到 WindowsAccessbridge 的源代码?

java - 这是不可变类和构建器模式的有效 Java 实现吗?

java - Gson反序列化嵌入成员的json

java - 尝试在泛型类上实现可比较的接口(interface)时出现绑定(bind)不匹配错误

java - 我无法向 android studio 中的 color.xml 文件添加颜色

java - 当我使用递归获得超过4个完全数JAVA时出错

java - 如何在jpanel上延迟显示图片?

java - 在哪里可以找到我的 WADL? (CXF)