Java中邏輯與,邏輯或,按位與,按位或的區分

Java中邏輯與,邏輯或,按位與,按位或的區分 一直以來,對這樣的概念很是模糊,今天總結了一下 先說說邏輯與(&&),邏輯或(||) 他們是短路形式的,舉例說明 int i = 0; System.out.println ( i++ == 1 && i++ == 2);//打印false System.out.println (i);//打印1 //這裏先判斷i++是否等於1,因爲是右自增,所以這裏i++ == 1是錯誤的,短路就是說不用執行後面的i++ == 2了,直接返回一個false,所以這就是最後結果爲什麼打印1的原因了 i = 0;//這裏重新賦值,爲了下面的例子明瞭 System.out.println ( ++i == 1 && i++ == 2);//打印false System.out.println (i);//打印2 //而這裏剛好相反,++i是等於1的,所以就執行了後面的i++ == 2,最終的i的值也就打印2了 邏輯與是當兩邊的運算都爲true時,才返回true,否則返回false,如果左邊返回false,就直接返回false,不再繼續執行右邊的代碼了 邏輯或是只要有左邊的時是true時,就返回true,不再執行右邊的代碼,但如果左邊的值爲false,則返回右邊運算的結果 按位與& 按位或| 它們和邏輯與,邏輯或是一樣的,區別就是非短路運算,即&運算符,即使左邊是false,也要執行右邊代碼;|即使左邊是true,也要執行右邊代碼 還有一點需要指出的區別就是 邏輯與,邏輯或在Java中運算符必須是boolean類型的,而按位與,按位或可以是int類型的,下面我舉例說明他們是如何運行的 System.out.println( 5&3);//(代碼1) 打印結果1 System.out.println( 5|3);//(代碼2) 打印結果7 System.out.println( 4&2);//(代碼3) 打印結果0 System.out.println( 4|2);//(代碼4) 打印結果6 //5 101 4 100 (註釋1) //3 011 2 010 (註釋2) //& 001 000 (註釋3) //| 110 110 (註釋4) 按位與的運算: 看註釋3對於註釋1和2,會發現除了兩位都是1的時候,其餘情況下&的結果都是0 按位或的運算: 兩個數中都爲0的時候結果爲0,否則結果爲1
發佈了98 篇原創文章 · 獲贊 2 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章