Java中自增运算符(++)num++ 和算数运算符(+)num = num + 1 和 赋值运算符(+=)num += 1的区别

自增运算符和+=运算符的另一个作用

先声明一个变量int num = 0;假设要对该变量加一,通常有三种方法:
num = num + 1;
num += 1;
num++;
上述三种都可以使 num 最终结果等于1;
可是上述三种运算它们有什么区别呢?其内部运算性质是一样的吗?答案是否定的。
num = num + 1最终的运算结果是int型;
而 num += num 和 num++ 最终的运算结果的类型取决于num;
这也就是我们要说的另一个作用。
自增运算符和+=运算符不会改变最终运算结果的类型。
(此处只是拿自增和+=运算符举例,自减和 -= 、*= 、/= 、%=其实都不会改变最终运算结果的类型)

举例

比如声明一个short型变量:short num = 0;而此让你对该变量+1,也是有三种方法:
①num = num + 1;
②num += 1;
③num++;
可是上述三句代码,num = num + 1;会报错,原因是:不兼容的类型: 从int转换到short可能会有损失
而num += 1;和num++不会报错,并且运行结果是正确的,说明num += 1;和num++;最终的运算结果是short型,而num = num + 1;最终的运算结果是int型,而用short型去接收一个in型,肯定是会报错的,除非进行强制类型转换。

解释

为什么num = num + 1;会是int型呢?
这是因为 1 是int型的,short + int 最终的结果是int型,这里就涉及java的自动类型转换,num是short型,1 是int型,java会把num给自动转换成int型去与1相加,也就导致num + 1是int型数据,此时再用short型的num去接收int型数据,是会报错的。

运用场景

如果你的num声明的就是int型,你用上述三种方法都可以达成最终的效果,并不会报错。
可是如果你的num是short型或者是byte型,此时上述三种方法就会有区别。如果你希望short型或者byte型自增或者加上一个数,还是short或者byte型,你就不能再使用①方法了。就得去使用②方法或者③方法了。如果是自增1,采用②方法,如果是要自增2及以上的,就采用③方法。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值