You need to enable JavaScript to run this app. Java中if条件布尔表达式里==与=运算符同时使用的工作原理是什么?
优惠活动
大模型
产品
解决方案
定价
更多

Java中if条件布尔表达式里==与=运算符同时使用的工作原理是什么?

示例代码

import java.util.*;
class Example{
    public static void main(String args[]){
        int x =10;
        boolean b = true;
        if((b=false)==false){
            System.out.println(b);
        }
    }
}

表达式执行机制

  • 首先Java运算符优先级规则中括号优先级最高,所以(b=false)==false会优先执行括号内的赋值操作:
    Java里赋值表达式本身有返回值,返回值就是赋值后左侧变量的最终值。因此执行b=false时,会同步完成两个操作:一是把变量b的取值修改为false,二是这个赋值表达式整体返回false。
  • 括号内的赋值操作执行完成后,才会执行==相等性比较:将括号内表达式返回的false和右侧的false做相等判断,得到的比较结果为true,因此if条件成立,进入代码块执行打印逻辑。
  • 由于进入if代码块前,变量b已经被赋值为false,因此最终打印结果为false。

常见误区说明

很多开发者容易把该表达式和b == false混淆,或者误以为赋值操作会晚于比较执行。如果去掉括号写为if(b=false==false),运行结果会完全不同:此时==优先级高于=,会先计算false==false得到true,再把true赋值给b,最终if条件依然成立,但打印的b值会变成true。

内容的提问来源于stack exchange,提问作者SKDAlwis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 20:36:02