public class test5 {
public static void main(String[]args) {
int x = 4,y=6,z=8;
boolean u=false;
u=!( (x >= --y || y++ < z-- )&& y == z );
System.out.println("u="+u);

y=6;
u=!((x>=--y|y++<z--)&y==z);
System.out.println("u="+u);
为什么结果是u=true
                      u=false

解决方案 »

  1.   

    (x >= --y || y++ < z-- )  (x>=5 || 5<8) 这个是false,   ( y == z)  (6==7) 这个也是false
    所以( (x >= --y || y++ < z-- )&& y == z )) 这个是false
    u=!( (x >= --y || y++ < z-- )&& y == z ); u=!false    
    所以最后u是true,解决了第一个问题。至于第二个问题,我相信你可以自己解决。
      

  2.   

    对boolean类型来讲结果一样,只是||,&&是短路操作
      

  3.   

    public class test5 {
    public static void main(String[]args) {
    int x = 4,y=6,z=8;
    boolean u=false;
    //此时x=4>y=5,为false,继续走第二个条件, y=5<z=8,为true, 走短路与 5 == 7 为false 最终结果为false,由于取反,所以u=true;
    u=!( (x >= --y || y++ < z-- )&& y == z );
    System.out.println("u="+u);y=6;
    //此时x=4>=y=5 false y=5<z=7 true  结果为true y =6 == z=6 true 双true 结果为true 由于取反,所以u=false;
    u=!((x>=--y|y++<z--)&y==z);
    System.out.println("u="+u);