【轉】Java中,&&與&,||與|的區別

轉自:http://blog.csdn.net/lishiyuzuji/article/details/8116516html

 

Java的邏輯運算符中,有這麼四類:&&(短路與),&,|,||(短路或)。java

 

&&和&都是表示與,區別是&&只要第一個條件不知足,後面條件就再也不判斷。而&要對全部的條件都進行判斷。web

看下面的程序:app

[html]  view plain copy
 print?
  1. public static void main(String[] args) {  
  2.         // TODO Auto-generated method stub  
  3.         if((23!=23)&&(100/0==0)){  
  4.             System.out.println("運算沒有問題。");  
  5.         }else{  
  6.         <span style="white-space:pre">    </span>System.out.println("沒有報錯");  
  7.         }  
  8.     }  

輸出的是「沒有報錯」。而將&&改成&就會以下錯誤:oop

[html]  view plain copy
 print?
  1. Exception in thread "main" java.lang.ArithmeticException: / by zero  


緣由是:&&時判斷第一個條件爲false,後面的100/0==0這個條件就沒有進行判斷。
        &時要對全部的條件進行判斷,因此會對後面的條件進行判斷,因此會報錯。




   ||和|都是表示「或」,區別是||只要知足第一個條件,後面的條件就再也不判斷,而|要對全部的條件進行判斷。
看下面的程序:this

[html]  view plain copy
 print?
  1.     public static void main(String[] args) {  
  2.         // TODO Auto-generated method stub  
  3.         if((23==23)||(100/0==0)){  
  4.             System.out.println("運算沒有問題。");  
  5.         }else{  
  6.         <span style="white-space:pre">    </span>System.out.println("沒有報錯");  
  7.         }  
  8.     }  

此時輸出「運算沒有問題」。若將||改成|則會報錯。


緣由是:||判斷第一個條件爲true,後面的條件就沒有進行判斷就執行了括號中的代碼,而|要對全部的條件進行判斷,
因此會報錯。spa

相關文章
相關標籤/搜索