概述

自增和自减是算术运算符的重要组成部分。

自增表达式有两种情况,前置自增 ( + + i ) 和后置自增 ( i + + ) 。

  • 前置自增:先进行自身加一,后运算
  • 后置自增:先运算,后进行自身加一

以常见的自增运算为例进行介绍,自减同理。

常见的自增运算大致可以分为三大类,分别是:

  • 自增表达式单独出现
  • 自增表达式赋值给其他变量
  • 自增表达式赋值给自身

下面我们分别进行代码演示和讲解。

① 自增表达式单独出现

int i = 100;
//后置自增
i++; //i = i + 1;
System.out.println(i); //输出101

int i = 100;
//前置自增
++i; //i = i + 1;
System.out.println(i); //输出101

由上述两个例子可以看出:自增表达式单独出现时,两者的结果是一致的,并没有因为先加 1 还是后加 1 而导致结果不同。

那么它们俩到底有何区别呢?


② 自增表达式赋值给其他变量

int i = 100;
//后置自增
int j = i++; //先进行 int j = i; 后进行 i = i + 1;
System.out.println(i); //输出101
System.out.println(j); //输出100

int i = 100;
//前置自增
int j = ++i; //先进行 i = i + 1; 后进行 int j = i; 
System.out.println(i); //输出101
System.out.println(j); //输出101

这次两者出现了结果不一致的情况,这也正是他们的区别。
  • 后置自增 int j = i++; 是先赋值,后自增。 即先进行 int j = i; 操作,所以此时 j = 100; 后进行 i = i + 1; 所以 i = 101;
  • 前置自增 int j = ++i; 是先自增,后赋值。 则先进行 i = i + 1; 操作,所以此时 i = 101; 后进行 int j = i; 所以 j = 101;

上述两个搞明白之后,我们脑海中可能会有疑问,当出现 ` i = i++` 这种情况时又该如何进行运算呢?

③ 自增表达式赋值给自身

这一块的理解需要你对上述两种情况比较清楚。否则学完你就蒙了,嘻嘻。

int i = 100;
//后置自增
i = i++; //先进行 int temp = i; 再进行 i = i + 1; 后进行 i = temp;
System.out.println(i); //输出100

上述是后置自增的例子,运算规则是使用了临时变量 temp。

  1. 首先,将 i 赋值给临时变量 temp ,此时 temp = i = 100;
  2. 其次,i 进行自增,i = i + 1 = 101;
  3. 最后,将 temp 重新赋给 i , i = temp = 100; 所以 i = 100;

int i = 100;
//前置自增
i = ++i; //先进行 i = i + 1; 再进行 int temp = i; 后进行 i = temp;
System.out.println(i); //输出101

前置自增与上述后置基本一致,唯一的区别还是先加 1 还是后加 1 的问题。

  1. 首先,i 进行自增,i = i + 1 = 101;
  2. 其次,将 i 赋值给临时变量 temp ,此时 temp = i = 101;
  3. 最后,将 temp 赋给 i , i = temp = 101; 所以此时 i = 101;



怎么样,是否理解了呢?若还不理解,我们换一种方式来进行。

int i = 100;
//后置自增
temp = i++; 
i = temp;
System.out.println(i); //输出100

你会发现,这次更好理解了,但是实际上它和我们的第一种的情况完全一样。

都是采用了临时变量,用来计算 i 的值。


前置自增也类似,如下。
int i = 100;
//前置自增
temp = ++i; 
i = temp;
System.out.println(i); //输出101

到此,自增运算就介绍完毕了,下面我们一起来看一下相关的练习题吧!


常见练习题

int i = 1;
i = i++;
System.out.println(i);//输出1
//再看这道题是不是亲切了很多

int i = 1;
i = ++i;
System.out.println(i);//输出2

//好好想想哦!
int i = 5;
int j = (i++) + (++i); //5 + 7
System.out.println(i); //输出7
System.out.println(j); //输出12

int i = 1;
int j = 1;
if((i++) == 1 || (++j) == 1){
	i = 10;
}
System.out.println(i); //输出10
System.out.println(j); //输出1

//有点难度
int i = 10;
int j = 10;
i = j++; // i = 10; j = 11;
j = --i; // i = 9; j = 9;
i = ++i; // i = 10;
j = j--; // j = 9;
System.out.println(i); //输出10
System.out.println(j); //输出9

那么,以上就是关于自增和自减的全部知识点了。

这几道练习题你都做对了吗???