概述
- 自增运算符:++,自减运算符:- -。
- 自增自减运算符是只对一个变量运算的运算符,故为一目运算符
- 值得注意的是运算符在变量前和在变量后的效果有时会截然不同
自加自减操作:
++
: 加1操作
- -
: 减1操作
前加加 后加加
前减减 后减减
语法:
变量名++ 后加加
++变量名 前加加 5++ 错误 a++
变量名-- 后减减
--变量名 前减减
注意:++ --只能变量来用,具体数字不能用,会报错
前缀自增自减法与后缀自增自减法
区别详解
先用一段简单的代码展示两者的区别:
int a = 1;
int b = 1;
int m = a++;
int n = ++b;
System.out.println("a= "+a);
System.out.println("b= "+b);
System.out.println("m= "+m);
System.out.println("n= "+n);
运行结果:
分析:
变量a的值是2,这是因为 a++ 对a进行了 a=a+1的操作,所以a=2
变量b的值是2,这是因为 ++b 对b进行了 b=b+1的操作,所以b=2
变量m的值是1,这是因为 a++操作顺序是先将a=1对a++进行了赋值,然后才对a进行a=a+1操作,所以m =1
变量n的值是2,这是因为 ++b的操作顺序是先将b进行b=b+1操作,然后再将b=2赋值给++b,所以n=2
总结:
前缀自增的方式是先将变量进行自增,然后再将值赋值给前缀表达式
后缀自增的方式与前缀自增的方法相反,先将变量的值赋给后缀表达式,然后再对变量进行自增操作
-
特殊例子
int i=1;
i = i++;
System.out.println(i);
输出结果:
按照前面的讲述,这里的i=i++应该相当于i=i;i=i+1;,这样这个结果应该是2,这里就涉及到了JVM内存模型,要从内存出发来理解操作数在内存中的储存过程
每一个操作数在JVM中都有一个操作数栈(栈执行的是先进后出,后进先出的原则),JVM对操作数的存储过程就基于对操作数栈完成的。
++i是先入栈再++,而++i是先++再入栈
最后:
对于前缀自增还是后缀自增,对于初学者来说不必过于深究,这些使用对于初学者来说很少,大部分是用于循环的操作里,但里面的逻辑一定要理清楚,哪个是先赋值再自增一定要清楚明白。