Luk*_*ite -1 java string indexing
所以,这可能是一个非常愚蠢的问题......但我只是不理解它.
我有一个String str = "AB"
,当我调用str.substring(2)
它时不会生成索引超出范围的异常...它也不会返回任何内容,只是"",我想它应该...
但是看到字符串"AB"的长度为2,这是不是意味着最大索引是1?所以不会调用从2索引开始的子串生成IndexOutOfBoundsException
?它会在你打电话时产生一个异常str.substring(3)
,它应该是,但不是2 ...这对我来说没有意义.
根据Javadoc的说法,IndexOutOfBoundsException
它只会被抛出......
...如果
beginIndex
为负或大于此String对象的长度.
转换为:由于"AB"
长度为2且beginIndex
为2,因为2不大于2 ,所以不会抛出IOOBE .您正确地观察到3将抛出IOOBE,因为3大于2.
它还有助于记住substring
从[n,m)开始,其中m
是字符串的长度.如果n = m
,则导致数学区间[m,m),根据定义,它是空集.从此集合生成空值将是正确的行为.
思考子串索引的一种方法是在字母之间.0表示开头,2表示结尾.喜欢:
| A | B |
0 1 2
Run Code Online (Sandbox Code Playgroud)
每个索引选择其右侧的子字符串.在末尾有一个空子串,用索引2选择,因此有三种可能的结果:"AB","B"和"".
归档时间: |
|
查看次数: |
104 次 |
最近记录: |