这是一段Java代码:
static boolean a; // gets false static boolean b; static boolean c; public void printA(){ boolean bool = (a = true) || (b = true) && (c = true); System.out.print(a + ", " + b + ", " + c); }
它不编译,什么是概率?错误:该行上有多个标记;’bool’变量上的语法错误。我希望它能打印出来true, false, true。虽然根据我的教程书可以打印true, false, false。
true, false, true
true, false, false
我知道它会发生短路,但如果&&双方都需要进行评估,那不是家庭作业,我正在学习Java。干杯
(a = true) || (b = true) && (c = true);
等效于:-
(a = true) || ((b = true) && (c = true));
由于(a = true)被评估为true,因此第二个表达式不被评估,因为在那里您使用了 短路运算符(||) 。
(a = true)
true
因此,最后两个任务不会发生。和值b和c保持false。
b
c
false
注意:- 短路算子- &&和||,如果可以通过先前的评估获得特定结果,则不会进一步评估。
&&
||
所以:-
a && b如果 a 为假,则不会计算 b 。 __
a && b
a || b如果 a 为true ,则不会计算 b 。 __
a || b