Java if 语句在同时具有赋值和相等性检查 OR - d 时如何工作? [复制]
Posted
技术标签:
【中文标题】Java if 语句在同时具有赋值和相等性检查 OR - d 时如何工作? [复制]【英文标题】:How does a Java if statement work when it has an assignment and an equality check OR - d together? [duplicate] 【发布时间】:2017-02-19 16:39:33 【问题描述】:为什么这个带有赋值和相等检查的 if 语句评估为假?
public static void test()
boolean test1 = true;
if (test1 = false || test1 == false)
System.out.println("Yes");
else
System.out.println("No");
为什么要打印No
?
【问题讨论】:
这就是为什么你应该在这种情况下总是使用括号 你得到的答案没有完全解释问题或者完全错误。请参考链接的问题,一模一样。 【参考方案1】:因为operator precedence。相当于这样:
boolean test1 = true;
if (test1 = (false || test1 == false))
...
括号中的部分计算为false
。
【讨论】:
@Reign:test1 = false
都设置了值 并且 有一个结果,false
。赋值的结果就是赋值的值。【参考方案2】:
您在 if 语句中为 var 赋值,但没有使用它。如果要在 if 语句中赋值并使用,可以这样做:
boolean test1;
if ((test1 = false) == true)
System.out.println("Yes");
else
System.out.println("No");
【讨论】:
嗯,当然。但是,如果你要改变一些事情,你可以写boolean test1 = false; System.out.println("No");
,不会有任何混淆。
是的,对不起,我会编辑它:P thx【参考方案3】:
if
语句中有以下运算符,它们的优先级如下:平等 > 逻辑或 > 赋值
if 然后像这样减少:
(test1 = false || test1 == false) //substituing test1 with its value
(test1 = false || true == false) //evaluating equality
(test1 = false || false) //evaluating logical OR
(test1 = false) //evaluating assignment
(test1) //substituing test1 with its value
(false) //evaluating primitive value, going to else block
因此打印否。
【讨论】:
没有。 Java evaluates left-to-right。赋值在相等之前完成。 @AndyTurner 如果首先评估作业,它应该打印出Yes,对吧? @AndyTurner((test1 = false) || test1 == false)
会打印 Yes。
((test1 = false) || test1 == false)
是一个不同的表达方式。
@AndyTurner 我知道,但要强调的是,如果没有括号,不能先评估赋值,否则 OP 的代码会打印 Yes。【参考方案4】:
当您将 test1 指定为 false 时,此代码的结果将打印“no” 测试1 = 假 然后 if 语句评估为 false 因为您然后评估 test1 == false 和 else 块执行
这可能是您正在寻找的:
if ((test1 == false) || (test1 == false)) //this line if the first answer is true it returns true without checking the seconded statement.
// if (test1 == false) would be the, same elauates as true
System.out.println("Yes");
else
System.out.println("No");
查看短路或操作符,这可能有助于您更好地掌握问题
【讨论】:
以上是关于Java if 语句在同时具有赋值和相等性检查 OR - d 时如何工作? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Python中的if语句——参考Python编程从入门到实践