String str = "Nobody ever went broke by buying IBM";
System.out.println("Length of this string: "+ str.length());
System.out.println("The character at position 36: "+ str.charAt(36)); // i get error here
System.out.println("The substring from 36: "+ str.substring(36));// why no error here
我输出如下:
Length of this string: 36
The character at position 36: error
The substring from 36:
我的问题是为什么在调用substring(36)时它没有显示错误,而是我得到的答案是空格。从逻辑上讲,索引36没有字符?但是当我打电话给charAt(36)时我得到错误,因为没有36索引?
答案 0 :(得分:2)
这就是这些功能应该如何工作的方式。 (假设java)。
来自oracle documentation:
substring
方法抛出IndexOutOfBoundsException
- 如果beginIndex为负或大于此String对象的长度。
36是字符串的长度,它不大于字符串的长度,因此调用substring
成功。
charAt
失败,因为36个字符位于索引0到35之间。查看charAt的文档