Java中的默认值和初始化

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (48)

基于我的参考,基本类型具有默认值,对象为空。我测试了一段代码。

public class Main {
    public static void main(String[] args) {
        int a;
        System.out.println(a);
    }
}

该行将System.out.println(a);是一个指向变量的错误avariable a might not have been initialized而在给定的引用中,该变量integer将具有0默认值。但是,使用下面给出的代码,它将实际打印0

public class Main {
    static int a;
    public static void main(String[] args) {
        System.out.println(a);
    }
}

第一个代码可能会出现什么问题?实例变量的行为与局部变量不同吗?

提问于
用户回答回答于

在第一个代码示例中,a是一个main方法局部变量。方法局部变量在使用之前需要初始化。

在第二个代码示例中,a是类成员变量,因此它将被初始化为默认值。

用户回答回答于

仔细阅读您的参考资料

默认值 当声明一个字段时,并不总是需要赋值。 已声明但未初始化的字段将由编译器设置为合理的默认值。一般来说,根据数据类型的不同,此默认值将为零或空值。然而,依赖于这种默认值,通常被认为是糟糕的编程风格。 以下图表总结了上述数据类型的默认值。 . . . 局部变量略有不同; 编译器从不将默认值分配给未初始化的局部变量。如果你不能初始化声明它的局部变量,确保在你尝试使用它之前给它赋值。访问未初始化的本地变量将导致编译时错误。

扫码关注云+社区