gpt4 book ai didi

java - Java中已声明的,未初始化的变量会怎样?

转载 作者:行者123 更新时间:2023-12-03 20:21:50 28 4
gpt4 key购买 nike

它有值(value)吗?

我试图了解Java中已声明但未初始化的变量/对象的状态。

我无法实际测试它,因为我不断收到“Not Initialized” 编译错误,而且我似乎无法抑制它。

虽然例如,我会猜测如果变量是integer,则可能等于 0

但是,如果变量是字符串,等于null还是isEmpty()返回true怎么办?

所有未初始化的变量的值都相同吗?还是每个声明(含义,整数,字符串, double 型等)在未显式初始化时都具有不同的值?

更新

因此,正如我现在所看到的,如果将变量声明为locally或在Class中,则有很大的不同,尽管我似乎无法理解为什么在类中声明为static时不会给出错误,但在主声明时却没有错误产生"Not Initialized" error

最佳答案

JVM如何精确地执行此操作完全取决于JVM,并且对程序员而言无关紧要,因为编译器确保您不会读取未初始化的本地变量。

但是字段是不同的。无需在读取它们之前对其进行分配(除非它们为final),并且尚未分配的字段的值为引用类型的null或相应原始类型的0值(如果该字段具有原始类型)。

对尚未分配的字段s.isEmpty()使用String s;会导致NullPointerException

So as I see now, it makes a big difference if the variable is declared locally or in the Class, though I seem to be unable to understand why when declaring in the class it gives no error, but when declaring in the main it produces the "Not Initialized" error.



通常,不使用没有值的值是不可取的。因此,语言设计师有两种选择:

a)为尚未初始化的变量定义一个默认值
b)防止程序员在写入变量之前访问变量。

b)对于字段很难实现,因此为字段选择了选项a)。 (根据调用的顺序,可能有多种方法读/写可能有效或无效,这只能在运行时确定)。

对于局部变量,选项b)是可行的,因为可以检查方法执行的所有可能路径以获取赋值语句。在语言设计中为局部变量选择了此选项,因为它可以帮助发现许多简单的错误。

关于java - Java中已声明的,未初始化的变量会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39076639/

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