You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中x += (x=5)输出15而非10,为何与预期不符?

代码输出15而非10的原因解析

先看你的代码:

class Main {
    public static void main(String[] ARGS){
        int x = 10;
        x += (x=5);
        System.out.println(x);
    }
}

你预期输出10,是误以为会先执行x=5,再算x += x得到5+5=10,但Java里复合赋值运算符(+=这类)的执行逻辑不是这样的:

  • 执行x += 表达式时,Java会先提前获取左侧变量x的当前值,并把这个值暂存起来。这里x初始是10,所以暂存的值是10。
  • 然后才会计算右侧的表达式(x=5):这一步把x赋值为5,此时x的当前值变成了5,但之前暂存的10不受影响。
  • 最后用暂存的10加上右侧表达式的结果5,得到15,再把15赋值给x。

所以最终x的值是15,而不是你预期的10。核心是复合赋值运算符会先锁定左侧变量的原始值,再处理右侧的赋值操作,不是用右侧赋值后的x值来计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:34:53