首先看这两段代码
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
运算步骤如下:
- 先将a赋值为0
- 运算赋值运算符右面的表达式a++,得到结果为0
- 执行完第2步后整个表达式为a = 0
- a++运算后将自己加一,也就是1(隐式的a == 1)
- 不过因为a = 0,又将a = 0赋值为了0,所以a最终等于0
所以重点就是不要将自己的思维困在a++得到的结果
a++得到的结果永远都是a之前的值
a++相当于表面上给你一个值,给完你值后我暗地里加一,你以后要是用不到我,那你永远也别想知道我暗地里加一这件事(嘿嘿嘿)