日期:2014-05-20  浏览次数:20731 次

一个JAVA优先级的问题,请高手帮忙解释一下!
boolean   m,n;
                  int   x=5,y=10;
m=(x> y&&x++==y--);
int   a=5,b=5;
n=(a> b&&a++==b--);
System.out.println( "m= "+m);
System.out.println( "n= "+n);
System.out.println( "a= "+a+ ",b= "+b);

这里为什么n的值也是FALSE,我觉得++和--的优先级要高于&&和> ,那就应该先算++和--
,那这样a和b的值就变了,在算逻辑的时候a> b就不会短路了啊!   请高手帮忙解释一下!

------解决方案--------------------
n=(a> b&&a++==b--);
并不是优先级的问题,因为&&县判断前面的逻辑正确性,当前面为False直接退出判断,所以你的后面a++==b--跟本不去执行。
所以高手编程&&总是true机率高的放在后面,|| 总是true几率小的放在后面,提高效率