求大神回复,||,&&,|与&的差别

||,&&,|与&的差别,有时会搞乱,,,,,,,,,,,,,,,

|| 逻辑或
&& 逻辑和
以上返回true false
| 按位或
& 按位和
对每个二进制计算and 或者 or,返回一个数字

|| 和 && 短路运算.与 和 或 只要第一个符合条件,就不在判断第二个值 .
| 和& 就是位运算 . 数字转二进制进行位运算

|| &&是布尔运算,|和&是按位运算

|| &&是布尔运算,&&是当两个操作数都为true,其运算结果是true,否则是false,||是两个操作数都为false,其结果是false,否则都是true

比如

boolean b=true,c=false
b&&c结果是false,b||c结果是true。

|和&是按位运算,他们是把两个操作数转换为二进制来进行运算,比如:

int x=3,y=7
x转换为二进制数0000 0011,y转化为二进制数0000 0111,
每个二进制位与另一个数的二进制位进行运算,

对于运算符用符号“|”,其运算规律如下:
两个位只要有一个为1,那么结果就是1,否则就为0
运算符“&”,其使用规律如下:
两个操作数中位都为1,结果才为1,否则结果为0,
所以x|y=7,x&y=3

这是我个人的理解
还有更详细的解说:
参考:http://blog.csdn.net/tanga842428/article/details/52824115

http://blog.csdn.net/lishiyuzuji/article/details/8116516

双字符的是逻辑运算,单字符的是位运算。

一个符号的是位运算,而两个符号的是逻辑运算
||和&&有短路的作用,运算比|和&要快

首先 &和| 称为布尔运算符,&&和|| 称为条件布尔运算符。

  两种运算符得到的结果完全相同,但得到结果的方式又一个重要区别:条件布尔运算符性能比较好。他检查第一个操作数的值,再根据该操作数的值进行操作,可能根本就不处理第二个操作数。

  如果&&运算符的第一个操作数是false,就不需要考虑第二个操作数的值了,因为无论第二个操作数的值是什么,其结果都是false。同样,如果第一个操作数是true,||运算符就返回true,无需考虑第二个操作数的值。但&和|却不是这样,它们总是要计算两个操作数。

  因为操作数的就算是有条件的,如果使用&&和||运算符来代替&和|,性能会有一定提高。在大量使用这些运算符的应用程序中这表现得尤为明显。作为一个原则,尽可能使用&&和||运算符。这些运算符有时用于比较复杂的情形,例如,只有一个操作数包含某个值时,才计算第二个操作数(让我想起微软报表那点事了):

  var1 = (var2 != 0) && ( var3 / var2 > 2 );

  如果var2是0,则var3除以var2就会导致“除0错误”,或者把var1定义为无穷大(对于某些类型如float来说,可能出现后一种情形,也是可以检测到的)。

  那&和|有什么用呢?其实他们还有一个作用:对数值进行操作,以这种方式使用时,它们处理的是变量中存储的一系列位,而不是变量值,因此他们称为按位运算符。这个在很少用到,用到的时候再去复习吧。
www.xttblog.com业余草
CODE大全CODE大全