gpt4 book ai didi

Java 不打印默认的未初始化值

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:39:44 29 4
gpt4 key购买 nike

我理解只声明不初始化的 Java 对象默认为 null 值,但为什么下面的代码不能编译并打印出 null?

String a;
System.out.println(a);

最佳答案

来自 section 16 of the JLS :

Each local variable (§14.4) and every blank final field (§4.12.4, §8.3.1.2) must have a definitely assigned value when any access of its value occurs.

您的代码适用于非最终字段(实例或静态变量),因为它们是根据 section 4.12.5 初始化的) 但会因此导致局部变量的编译时错误。

如果 a 是原始变量,情况也是如此。这是一个简短但完整的程序,展示了所有这些:

class Test {

static int x;
static String y;

public static void main(String[] args) {
System.out.println(x);
System.out.println(y);

int lx;
String ly;
System.out.println(lx); // Compile-time error
System.out.println(ly); // Compile-time error
}
}

删除非编译行后前两行的输出:

0
null

关于Java 不打印默认的未初始化值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19068722/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com