1、自增(++)自减(--)运算符是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算,而自增自减运算符是一个操作数。
实例:
public class selfAddMinus{ public static void main(String[] args){ int a = 3;//定义一个变量; int b = ++a;//自增运算 int c = 3; int d = --c;//自减运算 System.out.println("进行自增运算后的值等于"+b); System.out.println("进行自减运算后的值等于"+d); } }
运行结果为:
进行自增运算后的值等于4
进行自减运算后的值等于2
解析:
-
int b = ++a; 拆分运算过程为: a=a+1=4; b=a=4, 最后结果为b=4,a=4
-
int d = --c; 拆分运算过程为: c=c-1=2; d=c=2, 最后结果为d=2,c=2
2、前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算。
3、后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算
实例:
public class selfAddMinus{ public static void main(String[] args){ int a = 5;//定义一个变量; int b = 5; int x = 2*++a; int y = 2*b++; System.out.println("自增运算符前缀运算后a="+a+",x="+x); System.out.println("自增运算符后缀运算后b="+b+",y="+y); } }
运行结果为:
自增运算符前缀运算后a=6,x=12
自增运算符后缀运算后b=6,y=10
注意1:
i = a++ :现将a的值拿出来当作结果,然后进行自增操作,最后将结果的值赋给i。原因和运算符的优先级有关,= 的优先级小于 ++ ;
i = ++a :先进行自增操作,然后将得到的值赋值给i;
int i = 6; int j = i++ + ++i;
j = 6 + 8 = 13
因为 i++中先把 i 的值先拿出来,就是6,再进行自增就是7。++i 就是在运算之前先进行自增操作,就是8。
int i = 6; int j = ++i + i++;
j = 7 + 7 = 14
因为 ++i 是在运算前先进行自增操作,也就是7。后面的 i++ 先把 i 的取出来再进行自增操作,也就是7。
注意2:
byte / short / char 都可以参与自增运算
char c = ‘b’; int i = c + 2;
b 的ASCII码98,再加上2,就是100。
‘a’ ~ ‘z’ -> 97~122 ‘A’ ~ ‘Z’ -> 65~90 ‘0’ ~ ‘9’ -> 48~57
char c = ‘0’; int i = c + 3;
char类型的0是ASCII码的48,而不是本来的数字0。