JVM有变量区和缓存区。太底层了,初学者玩这个真的很无力。
细节就不说了,从结果反推JVM规则。每次参与计算的X都是固定值5(int型)。
(1)x+x,也就是5+5=10。
(2)x/=10,也就是5/10=0。因为整形。所以0.5向下取整就是0。
(3)x*=0,也就是5*0=0。所以结果是0。
--------------------------------------------------------
float x =5.0f;
x*=x/=x+x
System.out.println("y="+y);
(1)x+x,也就是5.0+5.0=10.0。
(2)x/=10.0,也就是5.0/10.0=0.5。因为float。所以0.5。
(3)x*=0.5,也就是5*0.5=2.5。所以结果是2.5。
--------------------------------------------------------
如果你想了解原理,请看这个
http://tieba.baidu.com/p/2861135702?pid=45816999663&cid=#45816999663