Java逻辑运算符与位运算符
逻辑运算符(boolean数据)
&& 称为逻辑与运算,仅当两个数都为真(即true)时,结果才为真
|| 称为逻辑或运算,其中一个数为真(即true)时,结果为真
! 称为逻辑非运算,将原数取反
A
B
A&&B
A||B
!Atrue
true
true
true
falsse
true
false
false
true
fase
false
true
false
true
true
false
false
false
false
rue
位运算符(整型和字符型)
~ “按位非” ~A 将A按比特位取反,规则:遇1则0,遇0则1
& “按位与” A&B 按A与B的比特位取与, 规则:相对位全1则1,否则为0
| “按位或” A|B 按A与B的比特位取或, 规则:相对位全0则0,否则为1
^ “按位异或” A^B 按A与B的比特位取异或, 规则:相对位相同为0,否则为1
A
B
~A
A&B
A|B
A^B
1
1
0
1
1
0
1
0
0
0
1
1
0
1
1
0
1
1
0
0
1
0
0
0
逻辑运算符与为运算符的区别
1、逻辑运算符是逻辑运算,仅能用于boolean(布尔型)运算,而位运算符是比特位运算,可用于整型和字符型,也可以用作逻辑运算;
2、逻辑运算符有短路的情况,就是(表达式1)||(表达式2);如果 表达式1 为true,则会直接给出结果true,而表达式2 不会执行,直接跳过;同理,(表达式1)&&(表达式2),如果 表达式1 为false,则会直接给出结果false,而 表达式2 还是不执行,会直接跳过;而 & 和 | 则两个表达式都会执行并进行判断;如下图:
左边是代码,右边是执行结果,我们可以轻易看出 || 后半部分没有执行,所以第一次输出b,b的值还是0;而 | 的前、后两部分都执行了,故输出的a和b都是1; && 和 & 也是这样。
参考链接: