关于java中的自增

先看代码

public class Test {
    
    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);
    }
}

我们根据代码逐行分析:

  1. i=i++; i++需要先把i值压入操作数栈,然后值自增,把i值压入操作数栈后为1,局部变量自增1则为2。然后再把操作栈的数赋值给i,则的值为1
  2. int j = i++; 把值压入操作数栈,则为1,然后自增1,则i的局部变量为2,再把操作数栈中的值付给j则j值为1
  3. int k = i + ++i * i++;对于操作数栈还应从左往右开始,则i的局部变量为2,int k = 2+ ++i * i++,接下来++i为自增不需要压入操作数栈所以int k = 2 +3i++,这时i的局部变量为3,i++ 先把 i 的值压入操作数栈然后再付给i,则int k = 2+33,则k的值为11

输出结果为

i= 4
j=1
k=11

你可能感兴趣的:(关于java中的自增)