所以正如之前在另一篇文章中所说的那样,我目前正在学校读Java课程。我正在使用eclipse,但我正在尝试了解控制台中出现的错误之间的区别。我不相信它告诉我我得到了什么错误。那么,说出差异的最佳方法是什么?
这是我知道失败的代码,我知道失败的原因,“数组中没有数据”我只是不知道我得到了什么类型的错误。
int[][] a = {{5,2,8,4},{}};
System.out.println(a[1][2]);
我得到的错误
Exception in thread "main" 123
java.lang.ArrayIndexOutOfBoundsException: 2
at test.main(test.java:82)
我为之前不清楚而道歉。我需要了解编译错误,运行时错误,逻辑错误和语法错误之间的区别。这属于哪个类别?
答案 0 :(得分:0)
在Java中,数组索引从0开始.2D数组在a[1]
处没有行。因此,您将超出范围,因为a[1]
处的数组长度为0.在运行时,当您尝试访问a[1][2]
时,它超出范围,因此JVM抛出{{ 1}}
您可以尝试将元素添加到初始数组中:
ArrayIndexOutOfBoundsException
答案 1 :(得分:0)
您正在获得int[][] a = {{5,2,8,4},{1, 2, 3, 4}};
。数组ArrayOutOfBoundsException
为空,因此当您尝试从位置a[1]
读取时,Java会抱怨,因为引用的内存位置超出了数组2
的范围。
这是Java的一种语言安全功能,可以防止你做危险的事情。在像C这样没有默认a[1]
的语言中,访问数组范围之外的内存位置有时会导致分段违规,从而导致程序崩溃,即使没有发生,它也会经常返回随机数据,应该被认为是一个错误。