- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有以下代码:
int j = 0;
boolean x = true, y = false, z;
z = (x || ((j++) == 0));
z = (y || ((j += 2) > 0));
j 的最终值为2
第一个赋值中的 z 将具有 true 或 false,即 true
第二次赋值中的 z 将具有 false 或 true,即 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
The && and || operators perform Conditional-AND and Conditional-OR operations on two boolean expressions. These operators exhibit "short-circuiting" behavior, which means that the second operand is evaluated only if needed.
关于java - 使用 OR 运算符进行 boolean 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47413429/
我是一名优秀的程序员,十分优秀!