a++和++a的区别
看谁在前面,符号在前面,先自增,然后用自增的值和接下来的值做运算
变量在前面,先用变量的值和其他的值做运算,然后再让他自增
a–,和–a同上
a++: 先取值,再自增
int a=18;
System.out.println(2+a++);//20
这里已经取值,得到值就不会执行后边的++
第一步执行:18+2=20
第二步执行:a=18+1
System.out.println(a);//19
++a(先自增再取值)
int a=18;
System.out.println(2+(++a));//21
这里先取值,取值过后才赋值
第一步执行:a=18+1//a此时为19
第二步执行:2+19
System.out.println(a);//19
单独使用时,功能一模一样,都是让a的值增加1;
不同的是与赋值号“=”一起使用时,y=++a表示先将a的值增加1后,再把值赋给y;
而,y=a++表示先把a的值给y,a自己再增加1.
“==”不是赋值
int a =1;
int c =a++;
a=1;
int d=++a;
c 等于1,d等于2。
a=a+1;其实是一种错误写法,不能通过编译,因为高转低没有做强制类型转换
a+=1;是可以通过编译的,由java底层来完成操作【就是a+1=】