JAVA默认值设计原因

标签 java

在JAVA世界中,字段变量如果不初始化就会有默认值,而局部变量则没有。

我想了很多,查了很多,但还是不明白。为什么JAVA世界要这样设计?顺便说一句,我认为这与堆和堆栈有关。

最佳答案

当您可以确定代码路径时,可以更轻松地检查局部变量是否始终在相对有限的范围内初始化。它并不总是正确,但除非代码令人困惑,否则它会做得很好。

final 字段也必须初始化,尽管只初始化一次。当一个构造函数调用另一个构造函数时,它可能会感到困惑。

对于非最终字段,很难确保字段在用于所有可能的代码路径之前已初始化。例如如果这些调用是从将来可能会更改的另一个类进行的,那么如何确保 setter 始终在 getter 之前调用。

相反,JVM 保留默认值并让您担心这个问题。

关于JAVA默认值设计原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38634826/

相关文章:

java - 如何解决 OS X 的 Maven 对 rt.jar 的依赖?

java - 无法为 JDK11 构建 JemmyFX - 类 "com.sun.glass.ui.Robot"不再存在

java - 根据按钮的值更改所有布局背景颜色

java - 返回值并打印在正确的位置

java - 销毁当前类对象并通过线程运行同一个类

java - JFrame:如何添加一个向框架添加新文本字段的按钮?

java - 我的 webview 视频可以在模拟器上运行,但不能在设备上运行

java - 为什么新的 JSP 抛出 JasperException : Unable to compile class for JSP

java - 你如何在 Java 中 "empty"一个 StringWriter?

java - 使用 JavaExe 的 Windows Java 服务默认情况下不运行