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

來源:互聯網
上載者:User

標籤:amp   概念   java   需要   情況   int   總結   否則   列印   

一直以來,對這樣的概念很是模糊,今天總結了一下 

先說說邏輯與(&&),邏輯或(||) 
他們是短路形式的,舉例說明 
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  
//3 011      2 010  
//& 001        000  
//| 110        110   

按位與的運算: 

看注釋3對於注釋1和2,會發現除了兩位都是1的時候,其餘情況下&的結果都是0 

按位或的運算: 

兩個數中都為0的時候結果為0,否則結果為1 

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.