关于JAVA中的自加自减运算

来源:百度知道 编辑:UC知道 时间:2024/05/15 20:17:31
public class EE
{ public static void main (String args[ ])
{ int x=7,y=7;
boolean b;
b=x>y&&x++==y--;
System.out.println(b+","+x+","+y);
}
}
上面的程序中的xy值为什么不变?
而像下面的这种代码中的xy为什么就改变?
int x=7,y=7,a,b;
a=x++;
b=y--;
System.out.println(a+","+b+","+x+","+y);

b == x>y && x++==y--;

因为这是个短路表达式……
编译器先判定了x>y,因为x>y为false,所以&&连接就成了一个永假表达式,编译器自然不会再去计算x++是否等于y--,也就没机会改变x和y的值了……

b=x>y&&x++==y--;
这里因为x>y 为fasle,与运算时,一个为假即整个表达式为假,就不计算后面的了。不信你可以把x的初值改为8,那x,y的值就会改变。

第二个你说的为什么会改变,这个是自加,相当于a=x=x+1,b=y=y-1 .