加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

当Java计算一个连词(\u0026\u0026)时,如果exp1为false,

发布时间:2020-12-15 05:07:56 所属栏目:Java 来源:网络整理
导读:我想知道是否保证在 Java程序中,只要左边的表达式(exp1)计算为false,就不会计算连接右边的布尔表达式(上面的exp2).我想知道因为我有一个如下表达式: if (var != null var.somePredicate()) // do something 如果Java不能保证在看到var为null之后停止评估(va
我想知道是否保证在 Java程序中,只要左边的表达式(exp1)计算为false,就不会计算连接右边的布尔表达式(上面的exp2).我想知道因为我有一个如下表达式:

if (var != null && var.somePredicate())
   // do something

如果Java不能保证在看到var为null之后停止评估(var!= null&& var.somePredicate()),那么它可能会尝试评估会引发NullPointerException的var.somePredicate().

所以我的问题是,Java在这方面是否保证了某种行为?或者写起来会更安全

if (var != null)
{
   if (var.somePredicate())
      // do something
}

解决方法

来自Java语言规范,15.23 Conditional-And Operator &&:

The && operator is like & (§15.22.2),but evaluates its right-hand operand only if the value of its left-hand operand is true.

因此语言规范保证如果左侧是假的,则不会评估表达式的右侧.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读