列出 java 上布尔运算符的优先顺序

Listing the precedence order of the Boolean operators on java

我的作业是列出布尔运算符的优先顺序,并对以下表达式求值:

true || true && false
true && true || false

但是,我对这意味着什么以及如何做感到困惑。有人可以澄清这个作业要求什么吗?

要获得一个想法,您可以在下面查看 table。它显示了所有 Java 运算符,从最高优先级到最低优先级,以及它们的结合性

取自here

所以你可以根据这个看到,两个结果都是true

运算符优先级仅仅是应用运算的顺序。例如,考虑以下数学语句:

10 + 6 / 2

嗯,(10 + 6) / 2 = 16 / 2 = 8,但是 10 + (6 / 2) = 10 + 3 = 13,很明显,执行操作的顺序很重要。从数学上讲,这些答案中哪一个是正确的?如果你在考试中被问到这个问题,你应该选择哪个答案?运算符优先级告诉你。

问题是要求您为布尔运算符做类似的事情。

试试下面的程序:

public class HelloWorld {

     public static void main(String []args){
        System.out.println(true || true && false);

        System.out.println(true && true || false);
     }
}

原来两人都是true.

为了进一步了解这一点,您可以尝试使用括号来了解这如何改变语句的真值。例如,

System.out.println((true || true) && false);

false。将其与

的事实进行对比
System.out.println(true || true && false);

true。这说明 Java 执行操作的顺序是什么?好吧,我写括号的方式改变了结果,很明显这是不对的。你可以由此推断 Java 一定是在做括号 "the other way":

System.out.println(true || (true && false));

如果您查看@Sand 的回答中的图表,&& 实际上确实比 || 具有更高的优先级,因此首先应用此操作。这正是我们在这里看到的。