Java基础系列文章
Java基础(十):关键字static、代码块、关键字final
Java基础(十八):java比较器、系统相关类、数学相关类
一、逻辑运算符
基本语法
- 逻辑运算符,操作的都是boolean类型的变量或常量,而且运算得结果也是boolean类型的值
- 运算符说明:
- & 和 &&:表示
"且"
关系,当符号左右两边布尔值都是true时,结果才能为true。否则,为false - | 和 || :表示
"或"
关系,当符号两边布尔值有一边为true时,结果为true。当两边都为false时,结果为false - ! :表示
"非"
关系,当变量布尔值为true时,结果为false。当变量布尔值为false时,结果为true - ^ :当符号左右两边布尔值
不同
时,结果为true
。当两边布尔值相同
时,结果为false
- 理解:
异或,追求的是“异”!
- 理解:
- & 和 &&:表示
- 逻辑运算符用于连接布尔型表达式,在Java中不可以写成 3 < x < 6,应该写成x > 3 & x < 6
- 区分“&”和“&&”:
- 相同点:如果符号左边是true,则二者都执行符号右边的操作
- 不同点:
- & : 如果符号左边是false,则继续执行符号右边的操作
- && :如果符号左边是false,则不再继续执行符号右边的操作
- 区分“|”和“||”:
- 相同点:如果符号左边是false,则二者都执行符号右边的操作
- 不同点:
- | : 如果符号左边是true,则继续执行符号右边的操作
- || :如果符号左边是true,则不再继续执行符号右边的操作
二、位运算符
- 位运算符的运算过程都是基于二进制的补码运算
基本语法
1、左移:<<
- 运算规则:在一定范围内,数据每向左移动一位,相当于原数据*2。(正数、负数都适用)
3<<4 类似于 3*2的4次幂 => 3*16 => 48
-3<<4 类似于 -3*2的4次幂 => -3*16 => -48
案例: 高效的方式计算2 * 8的值(经典面试题)
答案:2 << 3 、 8 << 1
2、右移:>>
- 运算规则:在一定范围内,数据每向右移动一位,相当于原数据/2。(正数、负数都适用)
- 【注意】如果不能整除,
向下取整
69>>4 类似于 69/2的4次 = 69/16 =4
-69>>4 类似于 -69/2的4次 = -69/16 = -5
3、无符号右移:>>>
- 运算规则:往右移动后,左边空出来的位直接补0。(正数、负数都适用)
69>>>4 类似于 69/2的4次 = 69/16 =4
-69>>>4 结果:268435451
4、按位与:&
- 运算规则:对应位都是1才为1,否则为0
- 1 & 1 结果为1
- 1 & 0 结果为0
- 0 & 1 结果为0
- 0 & 0 结果为0
9 & 7 = 1
-9 & 7 = 7
5、按位或:|
- 运算规则:对应位只要有1即为1,否则为0
- 1 | 1 结果为1
- 1 | 0 结果为1
- 0 | 1 结果为1
- 0 & 0 结果为0
9 | 7 //结果: 15
-9 | 7 //结果: -9
6、按位异或:^
- 运算规则:对应位一个为1一个为0,才为1,否则为0
- 1 ^ 1 结果为0
- 1 ^ 0 结果为1
- 0 ^ 1 结果为1
- 0 ^ 0 结果为0
9 ^ 7 //结果为14
-9 ^ 7 //结果为-16
7、按位取反:~
- 运算规则:对应位为1,则结果为0;对应位为0,则结果为1
- ~0就是1
- ~1就是0
~9 //结果:-10
~-9 //结果:8
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/148570.html