当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 &&:
因此语言规范保证如果左侧是假的,则不会评估表达式的右侧. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |