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++相当于表面上给你一个值,给完你值后我暗地里加一,你以后要是用不到我,那你永远也别想知道我暗地里加一这件事(嘿嘿嘿)

经验分享 程序员 微信小程序 职场和发展