i = i++为什么得出的结果是0

首先看这两段代码

int a = 0;
a = a++; // 主要看这行
System.out.println("第一个a的值:" + a);
int a = 0;
a = ++a; // 主要看这行
System.out.println("第二个a的值:" + a);

得出的结果为

第一个a的值:0
第二个a的值:1

然后说明下i++与++i的相同点和不同点

相同点:

    i++和++i都是==i = i + 1==的简写

不同点:

    i++:运算后,得到运算==前==的值(将i拿出执行其它的表达式后再+1)

    ++i:运算后,得到运算==后==的值

++i就是累加,我们都知道这里就不详细说明了

重点说明下为什么a = a++这段代码最后的结果为0

运算步骤如下:

  1. 先将a赋值为0
  2. 运算赋值运算符右面的表达式a++,得到结果为0
  3. 执行完第2步后整个表达式为a = 0
  4. a++运算后将自己加一,也就是1(隐式的a == 1)
  5. 不过因为a = 0,又将a = 0赋值为了0,所以a最终等于0

所以重点就是不要将自己的思维困在a++得到的结果
a++得到的结果永远都是a之前的值

a++相当于表面上给你一个值,给完你值后我暗地里加一,你以后要是用不到我,那你永远也别想知道我暗地里加一这件事(嘿嘿嘿)
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值