Java打印空数组错误

时间:2016-10-07 02:58:49

标签: java arrays

这是我非常简单的代码,数据是一个空的双数组

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

我的问题是,不应该"抛出"和"如果"停止"否则"从跑步?我如何修复代码以使其正常运行?

3 个答案:

答案 0 :(得分:3)

==测试引用类型(如数组)的引用相等性。

  • empty == emptytrue
  • 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]);
}