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
的话,+ 离赋值号更近,就先进行自增,再赋值。