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

Java中自增运算符(++)的运行逻辑困惑求助

Java自增运算符(++)运行机制详解

核心规则

自增运算符分两种,核心区别在于值的返回时机:

  • 后置自增(变量++):先返回变量的当前值,再对变量执行+1操作
  • 前置自增(++变量):先对变量执行+1操作,再返回更新后的值

第一段代码分析

代码:

int a = 2;
int b = 4;
int c = 10;
a = b++;
System.out.println(a);
a = ++b;   
System.out.println(a);    

逐行拆解:

  1. a = b++;:此时b的当前值是4,先把4赋值给a,然后b自身加1,变成5
  2. 第一个System.out.println(a);:输出a的当前值4
  3. a = ++b;:此时b的当前值是5,先把b加1变成6,再把6赋值给a
  4. 第二个System.out.println(a);:输出a的当前值6

你觉得"仅一次加1"是误解——这里b实际上被执行了两次自增操作(b++和++b),从初始的4→5→6,所以第二次a拿到的是6,不是只加了一次。

如果把第六行改成a = ++c,逻辑是:c当前值10,先加1变成11,再赋值给a,所以输出11,完全符合前置自增的规则。


第二段代码分析

代码:

int a = 2;
int b = 4;
int c = 10;
a = b++;
System.out.println(a);
a = ++c;   
System.out.println(a);
a = ++b;
System.out.println(a);

逐行拆解:

  1. a = b++;:b的当前值4赋值给a,b自身加1变成5
  2. 第一个输出:4
  3. a = ++c;:c先加1变成11,赋值给a
  4. 第二个输出:11
  5. a = ++b;:此时b的当前值是5,先加1变成6,再赋值给a
  6. 第三个输出:6

你预期最后输出5是因为忽略了b++已经把b从4变成5这个操作——b++执行后,b的值就永久更新了,后续的++b是在5的基础上加1,自然得到6。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 20:22:14