我只是好奇 Java 实际是如何工作的if
声明。 (注意:当我在下面说“组件”时,我指的是语句检查的各个部分,例如a
, b
, c
)
哪个在计算方面更有效?
if (a && b && c) { do stuff }
or
if (a) {
if (b) {
if (c) {
do stuff }
}
}
我之所以问这个问题,是因为 Java 在第一个版本中所做的事情很重要。它会检查声明中的每一项内容还是会检查a
如果是的话false
然后取消检查报表的其余部分?
如果是这种情况,那么将最有可能失败的组件作为语句中的第一个组件是有意义的。
如果每次都检查整个语句,那么将组件拆分为一堆不同的语句更有意义,如第二个示例所示。
在爪哇,&&
and ||
保证短路:操作数从左到右求值,一旦确定结果就停止求值。
来自JLS http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.23:
The &&
运算符就像&
(§15.22.2),但仅当其左侧操作数的值为true
.它在语法上是左关联的(它从左到右分组)。
The ||
运算符就像|
(§15.22.2),但仅当其左侧操作数的值为 false 时才计算其右侧操作数。它在语法上是左关联的(它从左到右分组)。
这意味着您问题中的两个代码片段完全相同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)