a+=a+=b的执行
来源:互联网 发布:淘宝手机店铺收藏 编辑:程序博客网 时间:2024/06/03 16:31
一个面试题:
public static void main(String[] args) {
int a=6;
int b=3;
a+=a+=b;
//a=a+(a=a+b); //和a+=a+=b等效
System.out.println(a);
System.out.println(b);
}
猜猜a和b的打印结果。a=15;b=3;按照一开始的想法,**首先计算a+=b,得到a=9,再算a+=a,得到a=18,但是这是错的!**为了看到它的执行过程,只能看编译后的class文件,
可以看到,执行过程:
iload_1 //6入栈
iload_1 //6入栈
iload_2 //3入栈
iadd //栈顶6,3加得到9
dup//9入栈
istore_1//a=9
iadd//栈顶9,6加得到15
istore_1//a=15
这下就看的很清楚了,这种a+=a+=b的写法,我只想说,谁这么写谁有病。。。。
0 0
- a+=a+=b的执行
- 交换a、b的值temp = a; a = b; b = temp;比a = a^b;b = a^b;a = a^b;快
- a=a+b和a+=b的区别
- a=a+b和a+=b的区别
- a+=b与a=a+b的不同
- a=a+b和a+=b的区别
- a = a + b 与 a += b 的区别
- A^B = B^A
- A^B = B^A
- A^B = B^A
- A^B=B^A
- 当a=1,b=2,c=3时,if(a>c)b=a;a=c;c=b;的执行结果详解
- python的 a,b=b,a+b 和 a=b b=a+b 的区别
- A a=new B()的意义
- Python a,b=b,a+b
- a^=b^=a^=b的Bug?
- a==b与a.equals(b)的区别
- A *a=new B();
- Java 标注(Annotation)详解
- Task3 regularization
- JAVA事务的概念
- Android 旋转本地图片并保存覆盖原图片
- Bandwagon安装禅道记录
- a+=a+=b的执行
- 重装mySQL 3306 端口被占用,该怎么处理
- Jsoup解析器
- L1-009. N个数求和
- 会飞的沙皮
- iBET Online Casino Malaysia Sportsbook Rebate 0.35%(Casino Rebate, Online Casino Malaysia, Online Ca
- Anarchy的解题报告
- 关于Popupwindow弹框后外部背景变暗
- 关于java中 renameTo()方法的不成功