JAVA中b = a++ 与 b = ++a 的底层实现过程

在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;
可以按照上面画图的步骤试一下

自增是这样实现的,自减也同样是这样的过程实现的.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值