网络知识 娱乐 java中按位与和逻辑与的区别

java中按位与和逻辑与的区别

& 按位与

&既是位运算符又是逻辑运算符。

当&是位运算符时

&的两侧是int,要先把两侧的数转化为二进制数再进行运算。

例如:12&8 结果为8

0 0 0 0 1 1 0 0n0 0 0 0 1 0 0 0n----------------n0 0 0 0 1 0 0 0 =》 8

计算小技巧:

  • 0&0=0,0&1=0,1&0=0,1&1=1。0与任何为0,1与1为1。
  • 一个数与1,结果为0是偶数,结果为1是奇数。

比如: 21&1==1,奇数。

java中按位与和逻辑与的区别

判断奇偶方式

当&是逻辑运算符时

要求运算符两侧的值都为真,结果才为真。

java中按位与和逻辑与的区别

&为逻辑运算符

&& 逻辑与

&&是逻辑运算符,又称短路与。要求运算符两侧的值都为真,结果才为真。

java中按位与和逻辑与的区别

&&逻辑运算符

但是当左侧值为false,就不会计算右侧的值了,而&恰恰相反,&会计算两侧的值。

例子:

当a>b为false,则不会触发后面运算的异常(类似短路了)。

java中按位与和逻辑与的区别

短路效果

如果换成&,则因为会计算两侧值,报异常了![比心]求关注[送心]

java中按位与和逻辑与的区别

&会计算两侧