java关于a+=b与a=a+b的区别

今天看到一个题目a += b与 a=a+b的区别

看下面一段代码
代码A

short a=4;
int b=5;
a += b;

代码B

short a=4;
int b=5;
a =a+b;

可以告诉你:A编译成功,B编译失败。
这里没有为什么,需要记住一点,+= 会对结果进行转型,A代码的结果是int,最后赋值给a的时候,会转为shot类型。
我们看它的编译后的二进制代码:

  4: iconst_4   //加载常量4
  5: istore_1   //将常量4给第一个变量
  6: iconst_5  //加载常量5
  7: istore_2  //将常量5给第二个变量
  8: iload_1   //以int类型加载第一个变量到栈
  9: iload_2  //以int类型加载第二个变量到栈
 10: iadd    //弹出两个变量进行相加,结果入栈
 11: i2s    //弹出一个变量,将int转为short
 12: istore_1  //将short类型的值给第一个变量

那么 -=,*=,/=呢?

转载于:https://my.oschina.net/u/3217171/blog/3061891

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值