int a = 3; int b = a++; //隐藏了a=a+1,这句代码,且这句代码在该代码的下一句执行,即a++是先给b赋值,再自增 System.out.println(a); //输出的a值为4,证明a++是先赋值,后自增 int c = ++a; //输出的c为5,说明++a是先自增,再赋值,,总的来说,a++和++a都对a加了1,但赋值的时机不同,导致变量值不同 System.out.println(a); System.out.println(b); System.out.println(c);
尝试运行以上代码后,运行结果如上图所示
我们可以发现,第一次输出a的值时,它的值加了1,第二次输出a的值时,a的值又再次加一,说明不论是a++还是++a都有对a的值加一的效果。而b的值为3,c的值为5,说明a++和++a还是存在差异的。其实我们可以将b=a++理解为以下两行代码
b=a; a=a+1;
而++a可以理解为
a=a+1; b=a;
两种++都有自增,但是自增的时机不同,a++是先赋值再自增,而++a是先自增再赋值,这样就可以理解为什么b的值不增加,但是c的值却增加两次。