b=a++是先把a的值赋给b,然后a自加1;
b=++a是a先自加1,在把值赋给b
b=a++
public static void a(){
int a=1;
int b=1;
for(int i=0;i<5;i++){
b=a++;
}
System.out.println("a="+a);
System.out.println("b="+b);
}
最后得到的结果: a=6;b=5
b=++a
public static void b(){
int a=1;
int b=1;
for(int i=0;i<5;i++){
b=++a;
}
System.out.println("a="+a);
System.out.println("b="+b);
}
最后得到的结果: a=6;b=6
a++和++a
a++和++a 都是自增运算符,俩者的区别在于对变量a的值进行自增的时机不同
==> a++是先取值后自增; ++a是先自增后取值。
例如 x = 3;
(x++)+(++x) = 8;
解=> x++此时取值为3,而后自增令x=4,那么参与++x的初始值x为4,则在自增后取值为5
所以,3+5=8
看以下例题1:
var a=10 ; b=20; c=4; 求++b+c+a++的值
++b=21;a++=10;c=4; => ++b+c+a++=21+4+10=35;
例题2:var a=10, b=20 , c=30;
++a;//①
a++;//②
e=++a+(++b)+(c++)+a++;//③
alert(e);
①=> a=11(自增后取值为11); ②=> a=11(直接取值,此时a在下次运算时自增值为12);
③=> ++a=13 ++b=21 c++ = 30 a++=13
所以e=77
练习题:
public static void c(){
int a=0;
int b=0;
for(int i=0;i<5;i++){
b=a++; //-------1(i=0 b=0,a=1)
a=a++; //-------2
}
System.out.println("a="+a);
System.out.println("b="+b);
}
最后得到的结果: a=5;b=4
在以上代码中出现了a=a++;
当执行到第2步时,与b=a++;和b=++a;有点区别,根据 a++和++a 例题1/2 ,当a++执行完(a+1=2时)要赋值给变量a的时候,把暂时的数据拿出来,赋给变量a。等于2的结果被覆盖。所以当执行到练习的第2步时,a=1而不是a=2。