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);
逐行拆解:
a = b++;:此时b的当前值是4,先把4赋值给a,然后b自身加1,变成5- 第一个
System.out.println(a);:输出a的当前值4 a = ++b;:此时b的当前值是5,先把b加1变成6,再把6赋值给a- 第二个
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);
逐行拆解:
a = b++;:b的当前值4赋值给a,b自身加1变成5- 第一个输出:4
a = ++c;:c先加1变成11,赋值给a- 第二个输出:11
a = ++b;:此时b的当前值是5,先加1变成6,再赋值给a- 第三个输出:6
你预期最后输出5是因为忽略了b++已经把b从4变成5这个操作——b++执行后,b的值就永久更新了,后续的++b是在5的基础上加1,自然得到6。
内容的提问来源于stack exchange,提问作者nezar morjan
相关产品推荐
相关产品推荐

