这是我非常简单的代码,数据是一个空的双数组
private void findLast(){
double empty[] = new double[0];
if(data == empty){
throw new ArrayIndexOutOfBoundsException(" Array is empty");
}else{
System.out.println(data[data.length-1]);
}
}
当我运行代码时,我得到Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
我的问题是,不应该"抛出"和"如果"停止"否则"从跑步?我如何修复代码以使其正常运行?
答案 0 :(得分:3)
==
测试引用类型(如数组)的引用相等性。
empty == empty
是true
empty == new double[0]
是false
。如果您需要查找数组是否为空,请使用:
if (data.length == 0) {
答案 1 :(得分:1)
在java中,==运算符检查两个变量是否引用相同的对象,而不是变量引用的两个对象是否具有等效值。因此,即使空数据和数据都是大小为0的双数组,data == empty也永远不会成为真,因为它们不会引用同一个对象。
作为旁注,我不确定你是否有任何理由这样做,而0号数组的长度没有元素 - 1.如果空的零元素,创造它的意义何在?如果它没有零元素并且你想知道它是否没有存储,那么你应该知道数组在初始化之后总是存在一些东西。
答案 2 :(得分:1)
if(data.length==empty.length)
{
throw new ArrayIndexOutOfBoundsException(" Array is empty");
}else{
System.out.println(data[data.length-1]);
}