java中i=i+1跟i=i++有什么区别

Python09

java中i=i+1跟i=i++有什么区别,第1张

怎么说呢,i = i++就是坑爹的!!理论上讲,语言规范上就不应该这么写。

实际编译运算结果是 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