Java变量初始化的不同处理方式?

标签 java

我刚刚发现 Java 以不同的方式处理变量初始化。

案例一:

class A {
    boolean x;
    public static void main(String[] args) { 
        A a = new A();
        System.out.println(a.x);
    } 
}

当我运行上述程序时,输出显示为“false”。但现在我发布了另一段代码:

案例二:

class A {
    public static void main(String[] args) {
         boolean x;
         System.out.println(x);
    }
 } 

现在,上面的代码表明

java.lang.Error: Unresolved compilation problem:
    The local variable x may not have been initialized

为什么同样的事情会有不同的处理方式? 提前致谢!

最佳答案

来自 Java Primitive Data Types 上的 Oracle 文档:

Local variables are slightly different; the compiler never assigns a default value to an uninitialized local variable. If you cannot initialize your local variable where it is declared, make sure to assign it a value before you attempt to use it. Accessing an uninitialized local variable will result in a compile-time error.

所以这是一个有趣的细微差别。如果原始类型变量是局部声明的,则必须为其指定一个值。

关于Java变量初始化的不同处理方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56087055/

相关文章:

java - 当我们有访问器和修改器时,为什么要声明私有(private)字段?

java - 如何使 compareTo 方法尊重一般契约(Contract)?

java - Tomcat 或 Java 中是否存在任何类似 beforeCrash() 或 beforeExit() 的函数

java - Java 7 中方法 pack() 中的 NullPointerException

java - 按值对 HashMap 排序并转换为新映射

java - 写入 http 响应对象的 OutputStream 后设置内容长度

java - 在 Java 中使用列表来存储用户输入并执行任务

java - 使用 UCanAccess 查询 Access 数据库时的正则表达式匹配

Eclipse 中的 Java 属性文件

java - Getter 不关联任何字段 - Realm