当我执行下面的代码时,我得到下面给出的输出。但根据java运算符优先级&&的优先级高于||所以首先(boolb = true)&&(boolc = true)应该被评估,但这并没有发生。你能否告诉我原因以及幕后实际发生的事情。
static boolean boola, boolb, boolc;
public static void main(String[] args) {
boolean bool = (boola = true) || (boolb = true) && (boolc = true);
System.out.println("" + boola + boolb + boolc);
}
预期结果:truetruetrue
实际结果:truefalsefalse
||
是一种短路操作。如果它的第一个操作数为真,它甚至不评估第二个操作数。
(boola = true)
的值是真的,评估就在那里停止。所以其他布尔值保持其原始值:false。