先贴出测试代码:
public class TestStringIndex {
public static void main(String[] args) {
String test="woshifoucengjilaiguo";
System.out.println(test.length());
char i=test.charAt(21);
System.out.println(i);
}
}
异常信息
20
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 21
at java.lang.String.charAt(String.java:686)
at com.wangyu.study.TestStringIndex.main(TestStringIndex.java:19)
异常分析:
数组test的长度为20 ,当我们去访问索引为21的,及第22个字符的时候会报StringIndexOutOfBoundsException,表示字符串索引越界
代码:
public class TestStringIndex {
public static void main(String[] args) {
String test="woshifoucengjilaiguo";
System.out.println(test.length());
//char i=test.charAt(21);
char i=test.charAt(-1);
System.out.println(i);
}
}
异常信息
20
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.charAt(String.java:686)
at com.wangyu.study.TestStringIndex.main(TestStringIndex.java:20)
异常分析:
程序尝试去获得索引为-1的字符,抛出字符串索引越界。
个人总结:
如果程序中出现StringIndexOutOfBoundsException,表示程序尝试获取大于等于字符串length和小于0的索引字符。