- i++ 表示的是先赋值,再自增
- ++i 表示的是先自增,再赋值
当然还不止这些,先上一道自己踩过坑的题
public class Test {
public static void main(String[] args){
int i = 0;
i = i++;
System.out.println("i = " + i);
}
}
这道题程序员都不会陌生,答案是i = 0;
可为什么会是0呢,这就需要了解 i++的底层到底是如何运算的。
模拟i++底层实现
i = i++;
-------------
int i = 0;
int temp = i;
i = i + 1;
i = temp;
可以看到i的值先是被赋给了一个临时变量,此时temp = 0,i 再进行自增1运算, i = 1,最后把temp的值赋给了i ;结果就是i = 0。
++i
public class Test {
public static void main(String[] args){
int i = 0;
i = ++i;
System.out.println("i = " + i);
}
}
++i 就好理解一些了,先进行自增运算,再赋值。结果:
i = 1;
小技巧
最后贴一个关于如何区分i++与++i的小技巧,算是一个心得吧,希望对初学编程的人能够有所帮助。
i++是先赋值,再自增
++i是先自增,再赋值
如何才能不混淆呢,你可以想象算式的左边有一个赋值号,i++ 想象成 = i++,然后利用“就近原则”,此时i与赋值号更近,所以先进行赋值的操作,再自增,同理,如果是++i 的话,+离赋值号更近,就先进行自增,再赋值。
参考资料
Q.E.D.