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类型的值给第一个变量
那么 -=,*=,/=呢?