假设我有以下代码:
int j = 0;
boolean x = true, y = false, z;
z = (x || ((j++) == 0));
z = (y || ((j += 2) > 0));
j的最终值为2
z 在第一个分配中,将有true或false,这是真的
z 在第二次分配中,将有false或true,这是真的
为什么最终值是2?拥有 true || 和有什么区别 假和假||真?
我不是在问“短路”运算符,
我只需要对赋值运算符进行更多解释,以及第一个 j 没有改变j的值而第二个却改变了。
|| 运算符从左到右验证。
在您的情况下,第一个条件true || false
,一旦||
找到true
,它就不必检查其他条件,因为无论如何结果都是真的。这就是这里的原因,x||((j++)==0)
如果计算出 x = true,(j++==0)
则跳过下一个语句。
第二个条件false || true
,一旦||
找到false
,就必须检查下一个条件。
参考 > https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
&& 和 || 运算符对两个布尔表达式执行条件与和条件或运算。这些运算符表现出“短路”行为,这意味着仅在需要时才评估第二个操作数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句