在Java中,布尔值的“操作顺序”是什么?

让我们举一个对象的简单例子。我想确保“not null”是橙色或灰色。Catcat

if(cat != null && cat.getColor() == "orange" || cat.getColor() == "grey") {
//do stuff
}

我相信AND是第一位的,然后是OR。我有点模糊,所以这是我的问题:

  1. 有人可以引导我完成这个声明,这样我就确定我得到了发生了什么吗?

  2. 另外,如果我添加括号会发生什么;这会改变操作顺序吗?

  3. 我的操作顺序会因语言而异吗?


答案 1

Java 教程中有一个列表说明了运算符的优先级。将首先计算相等运算符,然后,然后计算 。括号将在其他任何内容之前进行计算,因此添加它们可以更改顺序。这通常与语言之间的语言几乎相同,但仔细检查总是一个好主意。&&||

这是您意想不到的行为的微小变化,这可能会导致您花费一整天的时间进行调试,因此最好将括号放在适当的位置,以便您确定评估的顺序。


答案 2

布尔运算顺序(我相信在所有语言中):

  1. 帕伦斯

所以你上面的逻辑等价于:

(cat != null && cat.getColor() == "orange") || cat.getColor() == "grey"