Java 实例变量和局部变量的默认值

Java 实例变量和局部变量的默认值,java,Java,我读到Java为类属性提供默认值,但不为局部变量提供默认值。对吗 若然,原因为何?当你在做好事的时候,为什么不一直做呢?标准的局部变量存储在堆栈上,在初始化之前不会真正创建它们。如果不使用局部变量,它就不会出现在堆栈上。然而,成员变量是在堆中分配的,因此有一个默认占位符(空引用或默认原语)。背后的非技术原因也可能是以下原因: 如果您声明一个局部变量,那么您这样做是为了使用它。用法与赋值有关。因此,访问已声明但未初始化的变量没有多大意义——程序员可能只是忘记了初始化变量 但是,字段只能在对象生命周

我读到Java为类属性提供默认值,但不为局部变量提供默认值。对吗


若然,原因为何?当你在做好事的时候,为什么不一直做呢?

标准的局部变量存储在堆栈上,在初始化之前不会真正创建它们。如果不使用局部变量,它就不会出现在堆栈上。然而,成员变量是在堆中分配的,因此有一个默认占位符(空引用或默认原语)。

背后的非技术原因也可能是以下原因:

如果您声明一个局部变量,那么您这样做是为了使用它。用法与赋值有关。因此,访问已声明但未初始化的变量没有多大意义——程序员可能只是忘记了初始化变量

但是,字段只能在对象生命周期的指定点之前或之后使用。强迫程序员对它们全部进行初始化是不好的。

方便的“变量初始值”参考卡:这里可能有一个副本,供垃圾贩子参考。