java - 为什么这个带有赋值和相等检查的 if 语句评估为假?

标签 java if-statement logic

当 Java if 语句同时具有赋值和相等性检查 OR-d 时,它是如何工作的??

public static void test() {
    boolean test1 = true; 
    if (test1 = false || test1 == false) {
        System.out.println("TRUE");
    } else {
        System.out.println("FALSE");
    }       
}

为什么这个打印是 FALSE?

最佳答案

表达式未按照您的想法进行解析。这不是

(test1=false) || (test1 == false)

在这种情况下,结果应该是 true,但是

test1 = (false || test1 == false)

false的值|| test1 == false 表达式首先计算,它是 false,因为 test1 设置为 true 进入计算。

这样解析的原因是precedence || 的优先级低于 == 运算符,但高于赋值运算符 = 的优先级。

关于java - 为什么这个带有赋值和相等检查的 if 语句评估为假?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29670421/

相关文章:

java - 在用户 session 中保存数据在用户之间共享

java - 修改Java中的隐藏文件

java - 调试 Conway 的生命游戏图形?

php - 向多个表中插入记录 无公共(public) ID

java - 尝试调试Java代码

java - 为什么我错误地启动了测试?

java - 在 Spring boot 中捕获 JDBCConnectionException

c - 该代码应该将每个单词的每个字母转换为大写。但运行代码会导致总线错误。总线错误的原因是什么?

java - 逻辑错误,还是对数据流的误解?

Wordpress - meta_query - 可以使用多个或嵌套的 meta_query 参数吗?