a+=a+=b的执行

    xiaoxiao2021-03-25  131

    一个面试题: 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的写法,我只想说,谁这么写谁有病。。。。

    转载请注明原文地址: https://ju.6miu.com/read-21965.html

    最新回复(0)