我是一个早期的初学者,我正试图弄清楚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;
,一切都很好。