Java:a = a + b与a += b的区别

Java中a += b与a = a + b有区别

首先看a = a + b

1.a为int型数据,b的精度小于或等于int
这是我们最常见的现象,Java将b的精度提升为int,然后计算。

int a = 127;
byte b = 1;
a = a + b;//a = 128

代码可以执行,结果为a = 128

2.a的精度小于int,b的精度小于或等于int

byte a = 127;
byte b = 1;
a = a + b;

出现了下面的Error
错误
编译软件直接报错------类型不匹配:无法从int转换为byte

原因是:
-等号左边的a为byte类型
-等号右边a+1,Java在进行精度小于int的运算时将表达式中所有值自动提升为int型,所以a+b是一个int型数据,
-在赋值时,int不能自动转换为byte

需要进行强制类型转换

byte a = 127;
byte b = 1;
a = (byte)(a + b);//a = -128

byte中127的二进制表示为0111 1111
byte中 1 的二进制表示为0000 0001
首先将127和1转换为int型,再相加,结果为
0000 0000 0000 0000 0000 0000 1000 0000
强制转换为byte时取后八位1000 0000,在byte中就是-128

再看a += b

1.a为int型数据,b的精度小于或等于int

int a = 127;
byte b = 1;
a += b;//a = 128
这与a = a + b结果是一致的,结果为a = 128

2.a的精度小于int,b的精度小于或等于int

byte a = 127;
byte b = 1;
a += b;//a = -128
这与a = (byte)(a + b);是一样的结果,证明a += b 时进行了强制类型转换

总结

当a的精度大于或等于b的精度时,a = a + b与a += b相同,a += b的结果与a的数据类型一致
当a的精度小于或等于b的精度时,a = a + b出现类型不匹配错误,a += b的结果与a的数据类型一致

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值