【转】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

相关文章
相关标签/搜索