实际编译运算结果是 i = i++ 的话,最后i一直是原值,没有自增
i = i+1 ,很容易理解就是i的值增1,返回给i
而 i = i++ ,i ++ 理论上在运算完毕以后要自加的,这个自加应该是发生在赋值之前,于是i的临时新值是 i+1
运算符只有一个 ++,所以会直接使用赋值号把右侧运算结果赋值给 i,于是 i 还是等于原来的 i
底层源码没见过……,也大致就是感觉如此了
this是本类内隐藏的一个对象通过操作这个对象可以给本类内的属性赋值,以及操作本类内的方法。
this.i=i是在类内使用的,this.出现的i代表类内声明的成员i 而第二个=号后面的i一般都是在类内方法传参以后得到的也就是将传进来的i的值赋给类内声明了的成员i。
所以说this严格意义上讲是本类的对象。
i++是自增运算符
i++等价于 i = i+1
自增运算符有几个难点:
i++和++i
i=i++ 和j=i++
好了,我们来分析两个问题
i++和++i
i++是先执行计算然后把i的值自增1,++i是先自增 1 再运算
i=i++ 和 j=i++
a. ++这个运算符在Java中是由返回值的,它的值就是i 怎么理解呢,伟大的JVM在执行++ 这个自增运算符时实际上是这样的:
先把 i 的值赋值给一个缓冲区,比如说 tmp 然后,执行 i=i+1return tmp这里返回了tmp,所以i=i++实际上什么也没做,就这样了 i还是原来的i
b. 而 j = i++ 呢,这个就好理解了,先把 i 自增 1 也就是执行语句 i=i+1 然后 ,把 i 原来的值赋值给 j 所以此时 j 就是原来的 i 而 i 比原来多 1