深入解析 i++

最近遇到一个面试题,关于 i++的。发现一直没有深究 i++的原理,有点不知所措,几天还是决定记录一下,希望能帮助到别人吧(我不信全球就我一个搞不清楚)。

题目

如下代码的运行结果,留下你的答案吧。
	public static void main(String[] args) {
            int i = 1;
            i = i++;
            int j = i++;
            int k = i + ++i * i++;
            System.out.println("i = "+i);
            System.out.println("j = "+j);
            System.out.println("k = "+k);
    }

解析

在不懂其中原理的情况,得到的答案是千奇百怪的。下面就让们来一步一步解析一下吧。
i = i++
  • ①把i的值压入操作数栈
  • ②i变量自增1
  • ③把操作数栈中的值赋值给i
int j = i++
同上所以j的值为1,执行完这条语句之后i的值为2。
int k = i + ++i * i++;
  • ①把i的值压入操作数栈
  • ②i变量自增1
  • ③把i的值压入操作数栈
  • ④把i的值压入操作数栈
  • ⑤i变量自增1

结果

i = 4
j = 1
k = 11
你算对了吗?
原文地址:https://www.cnblogs.com/shaoyu/p/12386601.html