Java算术运算符中的自增、自减运算符详解(附相关练习题)

概述

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

自增表达式有两种情况,前置自增 ( + + 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

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

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

  • 13
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值