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

Java运算符疑问:println中x++与x=x+1的执行时机差异

为什么x++在打印后自增,而x=x+1在打印前完成计算?

这问题问到点子上了!本质是Java里后置自增运算符和赋值表达式的求值规则不一样,咱们一步步拆解你的代码例子:

先看你的代码:

int x = 3;
System.out.println("Ans: " + (x++));
System.out.println("Ans: " + (x=x+1));

输出是Ans: 3和Ans: 5,原因如下:

1. 关于x++(后置自增运算符)

x++属于后置自增,它的执行逻辑是:

  • 第一步:先返回变量x当前的原始值作为整个表达式的结果
  • 第二步:再把x的值加1

所以当执行System.out.println("Ans: " + (x++))时:

  • 首先计算括号里的x++:先取x的当前值3作为表达式结果,然后x被更新为4
  • 接着把这个结果和字符串拼接,打印出Ans: 3

2. 关于x=x+1(赋值表达式)

Java里的赋值表达式x = 表达式,执行逻辑是:

  • 第一步:先计算等号右边的表达式的值
  • 第二步:把计算结果赋值给左边的变量x
  • 第三步:整个赋值表达式的结果就是这个新赋值的值

所以当执行System.out.println("Ans: " + (x=x+1))时:

  • 此时x的值是4,先计算右边的x+1,得到5
  • 把5赋值给x,现在x变成5
  • 整个x=x+1表达式的结果就是5,和字符串拼接后打印出Ans: 5

再用分步代码验证一下

把你的代码拆成更细的步骤,就看得更清楚了:

int x = 3;
// 处理x++的情况
int result1 = x++; // result1拿到3,x变成4
System.out.println("Ans: " + result1); // 输出3

// 处理x=x+1的情况
int result2 = x = x + 1; // 先算x+1=5,赋值给x,result2拿到5
System.out.println("Ans: " + result2); // 输出5

简单总结一下核心区别:

  • x++:先取值,后自增
  • x=x+1:先算新值,赋值后返回新值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:05:21