如何检查Java中的非初始化数组参考



我是一个早期的初学者,我正试图弄清楚java中的for-each迭代和参考变量如何工作,并给自己写了一个小的测试代码以播放。<<<<<<<<

为了使用for-each循环,我首先需要一个数组,所以我创建了一个数组参考,但没有初始化。

但我的代码不会编译,因为显然我写的if statement(我写的是为了检查未经启发的数组引用)使用了一个未经启动的变量。

public class ForEach {
    public static void main (String[] args) {
        // create array reference
        int[] array;
        //check if array reference has been initialized
        if (array == null) { 
            System.out.println("No array has been found.");
        }
        else {
            for (int i : array) {
                if (array[i] != 0) {
                    System.out.println(array[i]);
                 }
            }
        }
    }
}

我认为非注释数组参考的默认值为null,我可以在if-Statement中检查null。那么,为什么我会收到编译错误,告诉我可能没有初始化的变量"数组",否则您如何检查null-Reference?

希望有人可以帮助我。非常感谢您。

P.S。无论我是否没有任何意义,我的面孔是否有意义。现在; - )

类上的字段将自动设置为null,因为最终可能会使用它们,但是由于本地变量仅在本地使用,而无需初始化它们,因此可以安全地将其视为错误。

当您为其构造对象时,Class的属性用默认值开始。但是,在方法中定义的局部变量需要进行INTIAL。

如果您移动数组,如下所示,您会注意到错误现在消失了,因为它是类属性,并将使用null初始化。

public class ForEach {
// create array reference
static int[] array; 
public static void main (String[] args) {

    //check if array reference has been initialized
    if (array == null) { 
        System.out.println("No array has been found.");
    }
    else {
        for (int i : array) {
            if (array[i] != 0) {
                System.out.println(array[i]);
             }
        }
    }
}
}

null和非初始化之间存在差异。

null仍然是有效的值。本地变量不需要任何价值,但是只要它们没有价值,就无法阅读它们。根本。唯一的法律举动是给它一个价值。

只需用 int[] array = null;替换 int[] array;,一切都很好。

相关内容

  • 没有找到相关文章

最新更新