长话短说,为什么Java不会为这行代码抛出IndexOutOfBoundsException?
str.substring(str.length())
这只是 IndexOutOfBoundsException 的定义吗?为了编程方便/对称,使开始/结束索引取相同范围的值?这只是 Oracle 的决定吗?幕后是否只有一个特殊情况可以使用包含起始索引来处理这种情况?还是有什么根本原因...
我阅读了文档,他们说它只返回空字符串(“”)。但我想知道这是否值得担心。它会改变吗?我想不会,但我想听听别人的说法。我有一些代码依赖于这样的行来工作,因为我使用 substring 和 indexOf(...)+1 来分割一些行,并且我真的不想在代码行周围放置不必要的逻辑。
这里是码头substring(beginindex)
javadoc。
返回一个新字符串,它是该字符串的子字符串。子字符串从指定索引处的字符开始,一直延伸到该字符串的末尾。
例子:
"unhappy".substring(2) 返回 "happy"
"Harbison".substring(3) 返回“bison”
"emptiness".substring(9) 返回 "" (空字符串)
参数:
beginIndex 开始索引,包含在内。
返回:
指定的子字符串。
投掷:
IndexOutOfBoundsException - 如果 beginIndex 为负数或大于此 String 对象的长度。
基本上是因为它只是抛出 ifbeginindex > length
并会返回一个空的String
if beginindex == length
.
正如 @Kayaman 指出的,Oracle 不会仅仅为了改变这一点而破坏对其他 java 版本的向后兼容性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)