gpt4 book ai didi

java - 当 lhs 为 false 时,为什么条件(三元)运算符以逻辑 AND 计算

转载 作者:行者123 更新时间:2023-12-01 11:44:24 24 4
gpt4 key购买 nike

return super.isAvailable() && expander != null 
&& rightNotLeft ? !expander.isExpandedRight() : expander.isExpandedRight();

我的问题是,当扩展器为空时,我遇到了空指针异常。但我认为这不应该发生,因为 Expander!=null 被评估为 false,并且由于正在使用 AND,整个表达式应该短路并返回 false。

return super.isAvailable() && expander != null 
&& (rightNotLeft ? !expander.isExpandedRight() : expander.isExpandedRight());

上面的代码(添加括号)解决了问题。然而,这对我来说没有意义,因为无论条件运算符发生什么,都无法返回 true,所以它不应该短路吗?

感谢您的回复。

最佳答案

这是由于operator precedence 。没有明确括号的条件实际上被评估为

return (super.isAvailable() && expander != null 
&& rightNotLeft) ? !expander.isExpandedRight() : expander.isExpandedRight();

关于java - 当 lhs 为 false 时,为什么条件(三元)运算符以逻辑 AND 计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29270892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com