• 35648

    文章

  • 23

    评论

  • 20

    友链

  • 最近新加了很多技术文章,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

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

欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/jsh/2019/0614/3271.html

2019独角兽企业重金招聘Python工程师标准>>>

今天看到一个题目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类型的值给第一个变量

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

相关文章

暂住......别动,不想说点什么吗?
  • 全部评论(0
    还没有评论,快来抢沙发吧!