第2章 Java编程基础——FAQ2.17 在执行与运算时, 运算符&和&&有什么区别?

FAQ2.17 在执行与运算时, 运算符&和&&有什么区别?

 

后者是进行与运算,前者也是与的意思,但是按'位'与

 

比如说:2&5
就是把2和5变成二进制,然后对应的位进行与运算.0 0 为0,1 1 为1,0 1 和1 0 都是0
2-->010
5-->101
    000->0

————————————————————————————————————————————————————————————————————————————————————————

// 区别之一:&&的2个操作数只能是boolean型的,而&的操作数可以是boolean,也可以是整型 int i = 1&2; // 能通过编译 int j = 1 && 2; //编译出错 // 区别之二:是否具有短路特性 int x = 1; if( x++ > 100 && x++ >100 ){ } System.out.println(x); // x加了1一次,说明&&具有“短路”的特性 if( x++ > 100 & x++>100){ } System.out.println(x); // x加了2一次,说明&不具有“短路”的特性

 

————————————————————————————————————————————————————————————————————————————————————————

 

当判断两个Boolean的时候,&&如果前面已经能知道结果的话是不执行后面的,但是&却是要全部执行

————————————————————————————————————————————————————————————————————————————————————————

&是按位與運算..  &&是邏輯運算符.
按位與運算,相應的位進行與,除了1 & 1為1以外,其他都為0,例如,
00101111 & 00001001 ==00001001 
&& 出來的結果是一個boolean值.  兩個條件同時為true的時候,,結果才為true,否則為false

————————————————————————————————————————————————————————————————————————————————————————

& 是位运算符  用于计算出两个表达式的值按位与之后的值. 
  二进制学过吧,    比如    1  &  1  =  1  ;1  &  0  =  0  ;  0  &  0  =  0 
  如果将其用在if  语句中当然不会出错,  但你却得不到正确的比较. 
  &&  是逻辑运算符  条件与运算符用于比较两个布尔值, 
  true  &&  true  =    true 
  true  &&  false  =  false 
  false  &&  false  =  false

————————————————————————————————————————————————————————————————————————————————————————

1.&可以按位与
2.&和&&都可以进行逻辑运算,区别是&&有短路,&没有短路

————————————————————————————————————————————————————————————————————————————————————————

& 可以与 = 组合成“布尔与赋值运算符”或者“按位与赋值运算符”,而 && 就没这个功能啦

posted @ 2010-01-17 01:51  2xd  阅读(652)  评论(0编辑  收藏  举报