布尔运算
布尔运算
1. 布尔类型基础
Java 的布尔类型只有两个值:
1 | |
布尔运算是一类 关系运算(relational operations),主要用于逻辑判断与条件控制。
2. 比较运算符(Comparison Operators)
比较运算符用于比较数值,返回 boolean 类型:
| 运算符 | 说明 |
|---|---|
> |
大于 |
>= |
大于等于 |
< |
小于 |
<= |
小于等于 |
== |
等于 |
!= |
不等于 |
示例:
1 | |
3. 逻辑运算符(Logical Operators)
| 运算符 | 名称 | 说明 |
|---|---|---|
&& |
与 AND | 两者都为 true 才为 true |
| ` | ` | |
! |
非 NOT | true 变 false,false 变 true |
4. 运算优先级(从高到低)
1 | |
✦ 优先级不易记忆时,使用括号即可避免歧义。
5. 短路运算(Short-circuit Evaluation)
逻辑运算符 && 和 || 都是 短路运算符。
5.1 AND(&&)的短路特性
1 | |
因此,当左边为 false 时,右边不会继续计算。
示例:
1 | |
如果没有短路运算,&&后面的表达式会由于除数为0而报错,但实际上该语句并未报错,原因在于与运算是短路运算符,提前计算出了结果false。
如果变量b的值为true,则表达式变为true && (5 / 0 > 0)。因为无法进行短路运算,该表达式必定会由于除数为0而报错,可以自行测试。
类似的,对于||运算,只要能确定第一个值为true,后续计算也不再进行,而是直接返回true:
5.2 OR(||)的短路特性
1 | |
示例:
1 | |
右侧不会计算,因此不会报错。
6. 三元运算符(b ? x : y)
语法:
1 | |
示例:
1 | |
上述语句的意思是,判断n >= 0是否成立,如果为true,则返回n,否则返回-n。这实际上是一个求绝对值的表达式。
注意到三元运算b ? x : y会首先计算b,如果b为true,则只计算x,否则,只计算y。此外,x和y的类型必须相同,因为返回值不是boolean,而是x和y之一。
要点:
- 先计算
b(条件表达式) - 若
b为 true,则只计算 x - 若
b为 false,则只计算 y - x 和 y 必须是 相同类型
7. 练习:判断是否是小学生(年龄:6~12 岁)
1 | |
8. 小结
- 布尔运算包含比较运算、逻辑运算和三元运算。
&&和||都是 短路运算符,可能会阻止后续表达式执行。- 三元运算符也是“短路运算”,只会计算其中一个表达式。
- 三元运算中
x和y的类型必须一致。