前缀自增/减
- 前缀自增/减会先运算后传值。
- 这里的运算指的是该数本身自增+1或者自减-1。
后缀自增/减
- 后缀自增/减会先传值后运算。
- -这里的运算指的是该数本身自增+1或者自减-1。
示例 1
public static void main(String[] arg0){
int a = 1;
int b = 1;
++a;
b++;
System.out.println("a:" + a);
System.out.println("b:" + b);
}
/*Output
a++: 2
b++: 2
*/
这样单独输出看似没有任何区别,但是假如直接输出++a和b++,结果就不一样了。
示例 2
public static void main(String[] arg0){
int a = 1;
int b = 1;
System.out.println("++a:"+ ++a);
System.out.println("b++:"+ b++);
System.out.println("a:"+ a);
System.out.println("b:"+ b);
}
/*Output
++a: 2
b++: 1
a: 2
b: 2
*/
++a的时候,a先运算再传值。
- 显然,++a是个勤劳的小天使,它知道a被初始化为1,于是开始自增+1运算,因此你看见的++a是自增后的2,然后++a马上把自增的结果2赋值给a。
然而在b++时,b先传值再自增。
- b++有着严重的拖延症,即便它知道b被初始化为1,它也说,先放着吧,我一会算好再给你,于是它顾着玩所以还没开始算,因此你看到的b++就是原本的数值1,但是它知道快到deadline要交稿啦,接着马上开始自增计算,急急忙忙地把1+1=2,2这个计算结果传给b,因此你看见的b就也是2啦~
示例 3(综合)
class Test3{
public static void main(String[] arg0){
int i = 1;
System.out.println("i : " + i ); // i = 1
System.out.println("++i : " + ++i ); // i = 2
System.out.println("i++ : " + i++ ); // i = 2
System.out.println("i : " + i ); // i = 3
System.out.println("--i : " + --i ); // i = 2
System.out.println("i-- : " + i-- ); // i = 2
System.out.println("i : " + i ); // i = 1
}
/*Output
i : 1
++i : 2
i++ : 2
i : 3
–i : 2
i– : 1
* /
- 总结 : 递增递减操作符不仅改变了变量,并且以变量的值作为生成的结果。