这可能是一个愚蠢的问题吗?抱歉,听起来是这样。我有以下代码。
条件1
public class Test {
int a;
void display() {
System.out.println(a);
}
}
条件2
public class Test {
void display() {
int a;
System.out.println(a);
}
}
第二个条件我很清楚。 a
未初始化。所以,这会产生一个错误。但在第一个条件下,我还没有初始化属性 a
。运行以下代码时,不会产生错误。相反,它会显示 0。这可能是由于 integer
初始化为0。
Test t;
t = new Test();
t.display();
不初始化局部变量并将属性(整数)初始化为0背后的逻辑是什么?
最佳答案
请参阅 Java 语言规范第 4.12.5 节:http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.12.5
“每个类变量、实例变量或数组组件在创建时都会使用默认值进行初始化。
“局部变量在使用之前必须通过初始化或赋值以可以使用明确赋值规则进行验证的方式显式赋予值。”
关于java - 不初始化局部变量并将属性(整数)初始化为 0 背后的逻辑是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23423852/