&和 | 既是逻辑运算符也是位运算符,而&&和||只是逻辑运算符。
一.(1)当&与&&同为逻辑运算符时,它们都用于连接两个Boolean类型的表达式,当&和&&的两端表达式同时为真时,表达式的结果为真,只要有一端为假,那么表达式结果为假。从用法上来看,&和&&并没有什么区别,比如我们可以写两个表达式:
3>5&3>2; 3>5&&3>2;
两个运算符都可以这么用,但是不同的是,当在判断这个表达式的真或假的时候,两者的判断次数不同;
当使用&运算符: 计算机在判断表达式的值的时候,先判断3>5 的值为假,然后再判断3>2的结果为真,于是最后的结果是 假&真 为假;
但是当我们使用&&运算符的时候:计算机先判断3>5 的值为假,此时表达式的结果一定为假,所以计算机就不再往下判断了,判定表达式结果为假。
逻辑运算符&与&&的区别是:
& 无论左边结果是什么,右边还是继续运算;
&&当左边为假,右边不再进行运算。
但是两者的结果是一样的。
(2)当|和||的两端表达式同时为假时,表达式的结果为假,只要有一端为真,那么表达式结果为真。
所以同理,我们可以知道|与||的区别:
| 无论左边结果是什么,右边还是继续运算;
||当左边为真,右边不再进行运算。
但是两者的结果是一样的。
所以&&和||是比较高效那么一点点。
二.&和 | 做位运算符,做二进制位之间的与运算:
比如 6&3=110&011=010=2
6|3=110|011=111=7