使用&&或||时,使用括号会有所不同吗?

时间:2019-02-04 23:15:38

标签: java logic comparison and-operator

一个人优先于另一个人吗?如果是这样,为什么?

 int value1 = 1;
 int value2 = 2;

 if (value1 == 1 && value2 == 2) {
    System.out.println("works");
    }

 if ((value1 == 1) && (value2 == 2)) {
    System.out.println("works");
    }

预期匹配实际结果。两者都打印字符串“ works”

2 个答案:

答案 0 :(得分:6)

与在数学表达式中一样,括号对于将逻辑表达式分组非常有用。

它使优先顺序更清楚。

在这种情况下,因为您只使用2个表达式,所以不需要它们。

但是在同时使用ORAND的情况下会发生什么?

这可能会导致模棱两可的情况:

if (a && b || c)

将被解释为:

if ((a && b) || c)

当您希望将表达式视为:

if (a && (b || c))    

答案 1 :(得分:-4)

不,完全相同。因为1 && ...不是有效的表达式,因此读取它的方式就像设置方括号一样。