我只是想知道,为什么Java在这种情况下会进行默认初始化?
public class TestClass {
static boolean testBool;
public static void main(String[] args) {
System.out.println(testBool);
}
}
但在这种情况下不是:
public class TestClass {
public static void main(String[] args) {
boolean testBool;
System.out.println(testBool);
}
}
这两个变体背后的合理性是什么?
不一定总是需要分配一个 声明字段时的值。领域 声明但未初始化的 将被设置为合理的默认值 编译器。一般来说,这 默认值为零或null, 取决于数据类型。靠 这样的默认值是 通常被认为是不好的编程 样式。
局部变量略 不同;编译器从不分配 默认值为未初始化 局部变量。如果你不能 初始化您的局部变量 已声明,请确保分配它 尝试使用它之前的值。 访问未初始化的本地 变量将导致编译时 错误。