概述
自增和自减是算术运算符的重要组成部分。
自增表达式有两种情况,前置自增 ( + + 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。
- 首先,将 i 赋值给临时变量 temp ,此时 temp = i = 100;
- 其次,i 进行自增,i = i + 1 = 101;
- 最后,将 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 的问题。
- 首先,i 进行自增,i = i + 1 = 101;
- 其次,将 i 赋值给临时变量 temp ,此时 temp = i = 101;
- 最后,将 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
那么,以上就是关于自增和自减的全部知识点了。
这几道练习题你都做对了吗???