首页 > 技术文章 > a = a++

sgKurisu 2021-05-18 15:11 原文

参考 https://blog.csdn.net/lovepluto/article/details/81062176

int a = 1;
a = a++;
System.out.println(a);

这段代码输出结果 a = 1

执行过程如下:

这里写图片描述

iconst_1:将常量 1 压入操作数栈。

istore_1:弹出操作数栈顶的数(此时为 1)并赋值给局部变量第一个元素即索引为 1 的 a。

iload_1:把局部变量索引为 1 的变量(这里是 a)压入操作数栈,此时栈顶元素为 1 。(这里将 1 压入栈顶是因为下面将要执行 incc 1,1)

incc 1,1(关键):把局部变量索引为 1 的数加 1 ,此时 a 的值为 2。注意:这个结果没有压入操作数栈。

istore_1:弹出栈顶的元素(此时为 1)赋值给 a ,覆盖 a 为 2 的结果

img

推荐阅读