自增变量

题目

    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);
    }

解析

public static void main(String[] args) {
        int i = 1;
        //  (i++)=1 ,i=1
        i = i++;
        // i=1 , (i++)=1 , j=1, i=2
        int j = i++;
        //i=2, (++i)=3, i=3,  (i++)=3 , i=4  ,k=11
        int k = i + ++i * i++;
        // 4
        System.out.println("i=" + i);
        // 1
        System.out.println("j=" + j);
        // 11
        System.out.println("k=" + k);
}

.class 文件

 public static void main(String[] args) {
        int i = 1;
        int i = i++;
        i = i + 1;
        int k = i++ + i * i++;
        System.out.println("i=" + i);
        System.out.println("j=" + i);
        System.out.println("k=" + k);
    }

小结

  1. 赋值 = ,最后计算
  2. = 右边的从左边加载值一次压入操作数栈
  3. 实际先算哪个,看运算符优先级
  4. 自增、自减 操作都是直接修改变量的值, 不经过操作数栈
  5. 最后的赋值之前,临时结果也是存储在操作数栈中
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容