当前位置: 首页 > 面试题库 >

Java“?” 用于检查null的运算符-这是什么?(不是三元!)

夏侯华彩
2023-03-14
问题内容

我正在阅读一篇与slashdot故事相关的文章,发现了这个小窍门:

以Java的最新版本为例,该版本试图通过提供无穷指针测试的简写语法来简化空指针检查。只需在每个方法调用中添加一个问号,就会自动包括对空指针的测试,从而替换了鼠的if-
then语句的嵌套,例如: ``

    public String getPostcode(Person person) {
      String ans= null;
      if (person != null) {
        Name nm= person.getName();
        if (nm!= null) {
          ans= nm.getPostcode();
        }
      }
      return ans
    }

有了这个: ``

public String getFirstName(Person person) {
      return person?.getName()?.getGivenName();
    }

我搜寻了互联网(好吧,我花了至少15分钟的时间在“
java问号”上搜索了各种变体),但一无所获。所以,我的问题是:是否有任何官方文件?我发现C#有一个类似的运算符(“
??”运算符),但是我想获取我正在使用的语言的文档。或者,这仅仅是对我使用的三元运算符的使用从没见过。

谢谢!

编辑:链接到文章:http : //infoworld.com/d/developer-world/12-programming-
mistakes-avoid-292


问题答案:

最初的想法来自groovy。它是针对Java 7提出的,作为Project
Coin的一部分:https://wiki.openjdk.java.net/display/Coin/2009+Proposals+TOC(猫王和其他Null-
Safe运算符),但尚未被接受。

提出了相关的Elvis运算符?:的x ?: y简称x != null ? x : y,特别适用于x是复杂表达式的情况。



 类似资料:
  • 问题内容: 除了标准,,和运营商; 但什么是这些均值(,,,)? 又如何操作? in返回正常的余数模量,但是仅当,为什么会这样?怎么办? 又如何操作?它有什么作用? 问题答案: :求幂 :异或(按位) :模数 :除以积分结果(舍弃余数)

  • 问题内容: 关于使用问号“?”的两个问题 在打印功能的括号内加上冒号“:”运算符:它们是做什么的?另外,有人知道它们的标准术语吗,或者在哪里可以找到有关它们使用的更多信息?我读过它们类似于’if’‘else’语句。 问题答案: 这是三元条件运算符,可以在任何地方使用,而不仅仅是print语句。它有时被称为“三元运算符”,但它不是唯一的三元运算符,而是最常见的一个。 这是Wikipedia的一个很好

  • 问题内容: 这段代码有什么问题: 问题答案: 三元运算符不能有不返回值或方法的语句。您需要具有返回值的语句。 您需要重写它。

  • 问题内容: 我最近遇到了以下代码: 这是什么,某种反向双λ? 问题答案: 没有操作员。第一个只是Java 8中引入的lambda语法,第二个是误导性的“小于” 和“一元减”的串联。 您可以将其读取为,即它会测试是否小于,所有(很好,大多数)负数就是这种情况,因此命名为。 仅出于完整性考虑:此测试不仅(有意地?)难以理解,而且-如评论中所指出- 也因(而)失败。相反,您可能应该只使用简单得多的。

  • 问题内容: 我已经使用Java几年了,但是直到最近我还没有遇到过这种构造: 这可能是一个非常简单的问题,但是有人可以解释吗?我该如何阅读?我很确定我知道它是如何工作的。 如果isHere为真,getHereCount()则称为 如果isHere为假,getAwayCount()则调用。 正确?这个结构叫做什么? 问题答案: 是的,它是 它称为条件运算符。许多人(错误地)将其称为三元运算符,因为它是

  • 问题内容: 运算符是做什么用的?我看过类似的东西 但是,这对我来说都没有意义。我已经完成了研究,但只提出了没有任何解释的示例。 问题答案: 是用于测试对象(实例)是否为给定Type的子类型的二进制运算符。 想像: 然而,随着;, 因为是的超类型,可能较少。 和, 这是因为Dog既不是的子类型也不是的父类型Cat,并且它也不实现它。 请注意,上面用于的变量是类型。这是一个运行时操作,将我们带到一个用