天天看點

Java知識系統回顧整理01基礎04操作符03邏輯運算符

一、長路與

短路與

  • 無論長路與還是短路與
  • 兩邊的運算單元都是布爾值
  • 都為真時,才為真
  • 任意為假,就為假
  • 差別
  • 長路與 兩側,都會被運算
  • 短路與 隻要第一個是false,第二個就不進行運算了

public class HelloWorld {

    public staticvoid main(String[] args) {

        //長路與  無論第一個表達式的值是true或者false,第二個的值,都會被運算

int i = 2;

        System.out.println( i== 1 & i++ ==2  ); //無論如何i++都會被執行,是以i的值變成了3

System.out.println(i);     

        //短路與 隻要第一個表達式的值是false的,第二個表達式的值,就不需要進行運算了

        int j = 2;

        System.out.println( j== 1 && j++ ==2  );  //因為j==1傳回false,是以右邊的j++就沒有執行了,是以j的值,還是2

        System.out.println(j);            

    }

}

二、長路或 和 短路或

  • 無論長路或還是短路或
  • 兩邊的運算單元都是布爾值
  • 都為假時,才為假
  • 任意為真,就為真
  • 差別
  • 長路或 兩側都會被運算
  • 短路或 隻要第一個是true的,第二個就不進行運算了

public class HelloWorld {

    public staticvoid main(String[] args) {

        //長路或  無論第一個表達式的值是true或者false,第二個的值,都會被運算

        int i = 2;

        System.out.println( i== 1 | i++ ==2  ); //無論如何i++都會被執行,是以i的值變成了3

        System.out.println(i);        

        //短路或 隻要第一個表達式的值是true的,第二個表達式的值,就不需要進行運算了

        int j = 2;

        System.out.println( j== 2 || j++ ==2  );  //因為j==2傳回true,是以右邊的j++就沒有執行了,是以j的值,還是2

        System.out.println(j);             

    }

}

三、取反

取反! 

真變為假 

假變為真

public class HelloWorld {

    public staticvoid main(String[] args) {

        boolean b = true;     

        System.out.println(b); //輸出true

        System.out.println(!b);//輸出false       

    }

}

四、異或

異或^ 

不同,傳回真 

相同,傳回假

public class HelloWorld {

    public staticvoid main(String[] args) {

        boolean a = true;

        boolean b = false;      

        System.out.println(a^b); //不同傳回真

        System.out.println(a^!b); //相同傳回假

    }

}

五、練習--邏輯運算符

題目:

int i = 1;

boolean b = !(i++ == 3) ^ (i++ ==2) && (i++==3);

System.out.println(b);

System.out.println(i);

上述代碼的輸出結果是?

心算,不要丢到Eclipse中去!

官方答案:

public class HelloWorld {

    public staticvoid main(String[] args) {

        int i = 1;

        boolean b = !(i++ == 3) ^ (i++ ==2) && (i++==3);

        //i值            2           3

        //表達式           false       true

        //              true    ^   true

        //                      false         

        System.out.println(b);

        System.out.println(i);

    }

}