在JAVA中,或者说在所以的编程语言中
int a = 10, b;
然后 b = a++;
简单可以理解为,把a先赋给b,即 b = a;
然后 a自身在来加1, 即 a = a+1;
这样 a = 11, b = 10
了
底层它是这样子的:
在内存中 开辟了 a = 10的内存, 还有b的内存
即:
这时如果 执行 b = a++
就相当先开辟一个临时内存 把 变量a的值放进去,防止变量a进行改变
即:
然后在内存里面 把 临时内存 + 1
即:
接着把加完之后的值,赋回到变量a
即:
这样a就变成了 11
最后再把临时内存里面的值,赋给变量b
即:
这样就变成了
这就是b = a++;
在底层的过程.
.
.
.
int a = 10, b;
如果b = ++a
简单可以理解为 a先自身加1 即 a = a +1;
然后再把 a 赋值 给 b, 即 b = a;
这样 a = 11, b = 11
了
总得来说其实过程和 b = a++差不多,只是最后一步不是把 临时变量 给 b
而是 把 自增后的变量 a 给 b
底层它是这样子的:
即:
这时如果 执行 b = ++a
就相当先开辟一个临时内存 把 变量a的值放进去,防止变量a进行改变
即:
然后在内存里面 把 临时内存 + 1
即:
接着把加完之后的值,赋回到变量a
即:
最后是把 变量a+1之后 的值赋给b
即:
这样就变成了
这就是b = a++;
在底层的过程.
如果 int i = 5;
然后执行 i = i++;
这个按照底层执行的话, i = 6
, 然后又被临时内存 5 覆盖掉
所以如果输出的话 i = 5;
可以按照上面画图的步骤试一下
自增是这样实现的,自减也同样是这样的过程实现的.