java中的运算符:有人能给我解释一下以下java代码的输出吗

java中的运算符:有人能给我解释一下以下java代码的输出吗,java,Java,输出: class { public static void main(String args[]) { boolean a=false,b=false,c=false,x=false; x=(a=true) || (b=true) && (c=true); System.out.println(a + "," + b + "," + c); } } 代码输出的秘密在于这一行: true,false,false 在避开第一

输出:

class {  
public static void main(String args[]) {  
    boolean a=false,b=false,c=false,x=false;  
    x=(a=true) || (b=true) && (c=true);  
    System.out.println(a + "," + b + "," + c);
    }   
}
代码输出的秘密在于这一行:

true,false,false
在避开第一个陷阱(将赋值(
=
)误读为比较(
=
)之后,人们可能会认为每个变量都将被赋值为布尔值
true

但事实是,由于OR(
|
)的第一部分-
true
赋值给
a
(a=true)
)-导致
true
,逻辑表达式(OR)的执行被停止,它无论如何都会导致
true

因此第二部分(
(b=true)和&(c=true)
)没有被执行,因此
b
c
仍然
false
我认为当你用上述表达式将
x
赋值给
true
false
时,
a
被分配给
true
,因此OR的右侧被忽略,因为无论RHS是什么,
x
已经是
true
。因此,
b
c
保持不变。它在Java文档的某个地方(关于逻辑表达式的RHS被忽略),这同样适用于
x=false&&which

你能格式化你的代码吗?您可以通过选择问题并按CTRL+K.No来完成此操作。没有人可以…当您执行
a=true
时,您将值
true
分配给
a
。你的怀疑是什么?寓意是:如果(a=true)永远不要键入
,那么你就不会意外地键入
如果(a=true)
。在这种情况下,我不确定这是否是一个意外。这可能是一个测试。哦,对不起。我打字花了很长时间(我用的是手机,所以速度更慢),为重复道歉。
x = (a=true) || (b=true) && (c=true);