我读到Java为类属性提供了默认值,但没有为局部变量提供默认值。那是对的吗?如果是这样的话背后的原因是什么?当你做的事情好的时候,为什么不一直这样做呢?
谢谢,
罗杰
答案 0 :(得分:27)
标准局部变量存储在堆栈中,并且在初始化之前不会实际创建。如果未使用局部变量,则它不会进入堆栈。但是,成员变量在堆中分配,因此具有默认占位符(空引用或默认原语)。
答案 1 :(得分:1)
背后的非技术原因也可能是以下原因:
如果声明局部变量,则执行此操作以使用它。用法与分配值有关。因此,访问声明但未初始化的变量没有多大意义 - 程序员可能只是忘记初始化变量。
但是,字段只能在对象生命周期中的指定点之前或之后使用。强迫程序员初始化它们都不会很好。