【问题标题】:Why aren't Java references not null by default? [duplicate]为什么 Java 引用默认不为空? [复制]
【发布时间】:2021-11-23 19:28:32
【问题描述】:

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

【问题讨论】:

  • 如果它们不为空,它们会引用什么对象? FWIW,C 没有引用,如果没有将它们分配给某些东西,就无法创建 C++ 引用。
  • 你是说在Java中,引用的默认值是not null?或者你是说你无法想象为什么一个引用应该永远被初始化为 null 以外的东西?
  • 我已经编辑了问题。
  • 我认为他的意思是“为什么默认情况下它们没有初始化为 null?”。

标签: java reference


【解决方案1】:
Thing ref;
if (someCondition)
   ref = oneThing;
else 
   ref = anotherThing;

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

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

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

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

【讨论】:

  • 我明白了。尽管如此,我感觉我应该总是在分配参考后检查异常。因此,我必须手动将其设置为 null。
猜你喜欢
  • 2014-05-10
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 2019-06-13
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多