RoH*_*HaN 104 java logic if-statement
Java if语句如何在具有赋值和相等性检查时OR一起工作?
public static void test() {
boolean test1 = true;
if (test1 = false || test1 == false) {
System.out.println("TRUE");
} else {
System.out.println("FALSE");
}
}
Run Code Online (Sandbox Code Playgroud)
为什么这个打印错误?
das*_*ght 189
表达式不会按您的思路解析.不是
(test1=false) || (test1 == false)
Run Code Online (Sandbox Code Playgroud)
在这种情况下结果会是true,但是
test1 = (false || test1 == false)
Run Code Online (Sandbox Code Playgroud)
false || test1 == false首先计算表达式的值false,因为它test1被设置为true进入计算.
它被解析这种方式的原因是,优先级的||比的降低==操作者,但比赋值运算符的优先级更高=.
Jon*_*eet 83
这基本上是一个优先问题.您假设您的代码相当于:
if ((test1 = false) || (test1 == false))
Run Code Online (Sandbox Code Playgroud)
......但事实并非如此.它实际上相当于:
if (test1 = (false || test1 == false))
Run Code Online (Sandbox Code Playgroud)
......相当于:
if (test1 = (false || false))
Run Code Online (Sandbox Code Playgroud)
(因为test1是true开始)
......相当于:
if (test1 = false)
Run Code Online (Sandbox Code Playgroud)
其分配值false给test1,用该表达是的结果false.