为什么 Java 引用默认不为空?

Why aren't Java references not null by default?

我在其他语言(C 和 C++)中看到过这个问题。但是我仍然不明白为什么 Java 也是这样。声明引用但不设置为 null 在什么情况下有用?

Thing ref;
if (someCondition)
   ref = oneThing;
else 
   ref = anotherThing;

在上面的代码中将 'ref' 初始化为 null 没有任何好处,至少只要两个赋值都不会抛出异常。

未初始化不是“有用”,只是初始化没有意义

我希望它不是那样 - 我更喜欢局部变量的初始化像成员变量一样工作 - 但事实就是这样。

我认为这是出于效率原因。如果您不必初始化局部变量,分配几乎只是堆栈指针的调整。