Java 使用多个布尔值计算表达式

Java 使用多个布尔值计算表达式,java,Java,对于大多数程序员来说,这似乎很简单,但是看到下面的代码打印true,我有点惊讶 //The actual implementation has proper logic, //just for simplicity I am using booleans in place of those logics System.out.println(false && false || true && true || false && false);

对于大多数程序员来说,这似乎很简单,但是看到下面的代码打印
true
,我有点惊讶

//The actual implementation has proper logic, 
//just for simplicity I am using booleans in place of those logics

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

因为我的理解是,如果第一个布尔值被评估为<代码> false ,下一个操作数是“代码> & & < /代码>,那么JVM甚至不会尝试对表达式的其余部分进行评估,只考虑整个为<代码> false <代码> < /P> 我希望下面这样的代码可以工作,但不是上面的代码:

System.out.println((false && false) || (true && true) || (false && false));
它是否像编译器在默认情况下将
&
s分组在
|
s之间

它是否像编译器在默认情况下将&&s分组到| |之间

它就是这样做的。它叫。语言显式地定义它,因为否则操作可能是不明确的,编译器不允许这种不明确

运算符进位的简单示例如下:

x = 1 + 2 * 3;
你希望结果是9还是7?运算符优先级明确定义了结果必须是什么

它是否像编译器在默认情况下将&&s分组到| |之间

它就是这样做的。它叫。语言显式地定义它,因为否则操作可能是不明确的,编译器不允许这种不明确

运算符进位的简单示例如下:

x = 1 + 2 * 3;
你希望结果是9还是7?运算符优先级明确定义了结果必须是什么