这是代码:
public class Test {
public static void main(String[] args) {
int[] a= new int[3];
System.out.print(a[a.length]);
}
}
为什么这会在运行时导致ArrayIndexOutOfBoundsExceptionwill?
答案 0 :(得分:3)
a.length
返回数组中的元素数,这里是3。
数组索引从0开始。如果包含3个元素,则其值为0,1,2。
没有索引3,因此是例外。
答案 1 :(得分:0)
索引从0
开始(而不是1
形式)。因此,在您的情况下,a
的索引为0
,1
和2
。
但是您正在尝试访问索引3
(length
或size
)。
改为使用System.out.print(a[a.length]-1);
。
答案 2 :(得分:0)
您应该使用它:
public class Test{
public static void main(String []args){
int[] a= new int[3];
System.out.print(a[a.length-1]);
}
}
说明:
a.length
将返回长度,即 3 (3个现有字段)。
但是a[3]
的索引索引从0开始到2。
用-1减小长度将返回最后一个实际存在的索引(2)。
所以a[a.length]
(= a[3]
)导致数组索引超出界限异常。
答案 3 :(得分:0)
它从0开始,因此您必须更改为[a.length - 1]
public class Test{
public static void main(String []args){
int[] a= new int[3];
System.out.print(a[a.length-1]);
}
}
答案 4 :(得分:-1)
这是IndexOutOfBoundsException
的层次结构:
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.IndexOutOfBoundsException
有时很难解决。在那些时刻,您可以使用IDLE调试器。它将在图形界面的每次迭代中显示每个变量的值。
您可以使用Eclipse
调试器,Netbeans
,Visual Studio
代码,Atom
扩展名。