比如你定义一个16个字符长度的字符串str,但是你却想取字符串大于16位位置上的字符str.charAt(20),超过了字符串的长度,就会报这个字符串越界错误

解决方案 »

  1.   

    你的代码中是不是有类似与这样的代码:
    String str = "abcdefg";
    ....
    for ( int i = 0 ; i < str.length ; i++ ){
      ...
      str.charAt(i);  ...
    }

    ... str.sub(0,2);
    因为你的程序运行逻辑原因。可能str没有复值就执行类似取子字符串的代码了。
     所以报错了。因为str是空的。
      

  2.   

    不好意思,更正。应该是str.substring(0,2);
      

  3.   

    你用substring, charAt之类的函数的时候,传递的参数值是-1而合法的值是[0,str.length() -1]另外,你是不是用到了indexOf,这个函数返回-1如果没有找到的话
      

  4.   

    JAVA检查越界,这是它的安全性