Java逻辑运算符与位运算符
逻辑运算符(boolean数据)
&& 称为逻辑与运算,仅当两个数都为真(即true)时,结果才为真
|| 称为逻辑或运算,其中一个数为真(即true)时,结果为真
! 称为逻辑非运算,将原数取反
A | B | A&&B | A||B | !A |
---|---|---|---|---|
true | 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; && 和 & 也是这样。
参考链接:
https://blog.csdn.net/Liuxiaoyang1999/article/details/90575185
来源:https://blog.csdn.net/qq_44971038/article/details/102748107