boolean a = true;
    boolean b = true;
    boolean c = false;

    System.out.println(a || b && c); // true
    System.out.println(b && c || a); // true

我最近才发现我认为这里有些奇怪。为什么&&||处于不同的优先级?我本以为它们处于同一水平。以上说明了这一点。即使从左到右的求值对第一个给出的结果都是假,而第二个则给出的是真,两个陈述都是正确的。

有人知道这背后的原因吗?

(顺便说一句,我只是在这里使用了很多括号,但是是旧代码提出了这个问题)

最佳答案

因为在传统的数学符号中,and(logical conjunction)的优先级高于or(logical disjunction)。

出于显而易见的原因,所有非深奥的编程语言都将反射(reflect)这种事情的现有约定。

关于java - 为什么&&的优先级高于|| (Java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20844191/

10-11 10:48