Java运算顺序与后置自增疑问:为何x + x++ + x的输出结果为25?
为何输出结果是25?
// CODE 1 public class YourClassNameHere { public static void main(String[] args) { int x = 8; System.out.print(x + x++ + x); } }
首先纠正你的逻辑偏差:你推测的8 + 9 + 8 = 25是错误的,实际运算过程为8 + 8 + 9 = 25,第三个x取值为9和Java的表达式求值规则、后置自增的执行逻辑直接相关:
- Java中所有表达式的操作数求值顺序严格遵循从左到右的规则,和运算符优先级无关,优先级只会决定运算的结合方式,不会改变操作数的读取顺序
- 后置自增
x++的执行逻辑是:先返回x当前的原始值,再立即对x执行+1操作,这个修改对后续所有x的读取都生效
我们一步步拆解CODE1的执行过程:
- 初始状态:x = 8
- 从左到右读取第一个操作数
x:拿到的值为8,第一个参与运算的数记为8 - 读取第二个操作数
x++:先返回x当前的原始值8,第二个参与运算的数记为8,紧接着把x的值更新为9 - 读取第三个操作数
x:此时x已经被上一步的自增操作修改为9,第三个参与运算的数记为9 - 最终求和:
8 + 8 + 9 = 25,和实际输出结果一致
你举的CODE2逻辑和上述规则完全匹配:
// CODE 2 public class YourClassNameHere { public static void main(String[] args) { int x = 8; System.out.print(x++); } }
这段代码里x++先返回原始值8作为打印结果,之后x也会更新为9,只是这段代码没有在x++之后再读取x的值,所以看不到修改后的效果。如果你在CODE2的打印语句后新增一行System.out.print(x);,就能看到输出结果追加了9,刚好对应CODE1里第三个x取9的逻辑。
内容的提问来源于stack exchange,提问作者Jerome Quah
相关产品推荐
相关产品推荐

