&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。而我们在开发中,遇到&或者|  我可以将他们转换成双&、双||,这样可以提高效率,原由是: 
           当表达式&&左边的结果是false时,发生短路,不用在计算右边的表达式,整个结果都为false。 
           当表达式||左边的结果是ture时,发生短路时,不用在计算右边的表达式,这个结果为true。 
代码体现: 
   &与&&: 
  
Java代码  
if(expression1 & expression2){}   
中expression1 和expression2 无论expression1返回true还是false,都会继续判断expression2的返回值   
  
  
Java代码  
public class Test4{     
    public static void main(String args[]){     
        if(10==10||10/0==0){     
            System.out.println("条件满足") ;     
        }     
    }     
};   
    
  
 
 
|与|| 
Java代码  
public class Test4{     
    public static void main(String args[]){     
        if(10==10||10/0==0){     
            System.out.println("条件满足") ;     
        }     
    }     
};   
    
  
 
这个程序执行会报错,因为程序会去判断每一个表达式,而下面:  
 
Java代码  
public class Test4{     
    public static void main(String args[]){     
        if(10==10||10/0==0){     
            System.out.println("条件满足") ;     
        }     
    }     
};   
    |