我的疑问是短路运算符的优先级。
下面是短路运算符的经典示例。
if(denom != 0 && num/denom > 10 )
这里使用简写运算符可以防止被零除错误,因为 num/denom 永远不会被执行。
现在我的问题是 Java 说 '/' 运算符的优先级高于 '&&' ,那么为什么 '&&' 的左侧在 '/' 之前计算?
最佳答案
/
的优先级高于 >
,而 >
的优先级高于 &&
。所以,表达式
a && b / c > 0
与
相同a && (b / c) > 0
与
相同a && ((b / c) > 0)
然后从左到右计算表达式。
如果 a
为 false,则整个表达式为 false,甚至无需计算第二项。
如果a
为真,则首先评估b/c
,并将结果与0进行比较。
关于java 短路运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24354117/