【发布时间】:2011-08-02 09:23:50
【问题描述】:
我正在阅读有关 Java 的内容,但我对为什么 System.out.println("a: " + a); 不会产生编译错误感到头疼。 a 曾经在哪里初始化过?
public class localVariableEx {
public static int a;
public static void main(String[] args) {
int b;
System.out.println("a: " + a);
System.out.println("b: " + b); //Compilation error
}
}
【问题讨论】:
-
b,默认初始化为0(如果未初始化),因为int是原始类型。所以它不能是一个编译错误,而是一个警告你的变量被统一化了。 -
@精英绅士,所以如果初始化为默认值,为什么会出现编译错误?
-
@精英绅士:抱歉,你错了:局部变量不会自动初始化。如果您在尚未确定为它们分配值时尝试访问它们,那么您将收到编译错误。
-
我的立场是正确的,我之前所说的不适用于局部变量。
标签: java variables compiler-construction scope