布尔运算

布尔运算

1. 布尔类型基础

Java 的布尔类型只有两个值:

1
2
true
false

布尔运算是一类 关系运算(relational operations),主要用于逻辑判断与条件控制。


2. 比较运算符(Comparison Operators)

比较运算符用于比较数值,返回 boolean 类型:

运算符 说明
> 大于
>= 大于等于
< 小于
<= 小于等于
== 等于
!= 不等于

示例:

1
2
3
4
5
6
boolean isGreater = 5 > 3; // true
int age = 12;
boolean isZero = age == 0; // false
boolean isNonZero = !isZero; // true
boolean isAdult = age >= 18; // false
boolean isTeenager = age > 6 && age < 18; // true

3. 逻辑运算符(Logical Operators)

运算符 名称 说明
&& 与 AND 两者都为 true 才为 true
` `
! 非 NOT true 变 false,false 变 true

4. 运算优先级(从高到低)

1
2
3
4
5
!
> >= < <=
== !=
&&
||

✦ 优先级不易记忆时,使用括号即可避免歧义。


5. 短路运算(Short-circuit Evaluation)

逻辑运算符 &&|| 都是 短路运算符

5.1 AND(&&)的短路特性

1
false && x  → 永远为 false

因此,当左边为 false 时,右边不会继续计算。

示例:

1
2
3
4
5
6
7
8
// 短路运算
public class Main {
public static void main(String[] args) {
boolean b = 5 < 3;
boolean result = b && (5 / 0 > 0); // 此处 5 / 0 不会报错
System.out.println(result);
}
}

如果没有短路运算,&&后面的表达式会由于除数为0而报错,但实际上该语句并未报错,原因在于与运算是短路运算符,提前计算出了结果false

如果变量b的值为true,则表达式变为true && (5 / 0 > 0)。因为无法进行短路运算,该表达式必定会由于除数为0而报错,可以自行测试。

类似的,对于||运算,只要能确定第一个值为true,后续计算也不再进行,而是直接返回true


5.2 OR(||)的短路特性

1
true || x → 永远为 true

示例:

1
boolean result = true || (5 / 0 > 0); // true

右侧不会计算,因此不会报错。


6. 三元运算符(b ? x : y)

语法:

1
condition ? value_if_true : value_if_false

示例:

1
2
3
4
5
6
7
8
// 三元运算
public class Main {
public static void main(String[] args) {
int n = -100;
int x = n >= 0 ? n : -n;
System.out.println(x);
}
}

上述语句的意思是,判断n >= 0是否成立,如果为true,则返回n,否则返回-n。这实际上是一个求绝对值的表达式。

注意到三元运算b ? x : y会首先计算b,如果btrue,则只计算x,否则,只计算y。此外,xy的类型必须相同,因为返回值不是boolean,而是xy之一。

要点:

  • 先计算 b(条件表达式)
  • b 为 true,则只计算 x
  • b 为 false,则只计算 y
  • x 和 y 必须是 相同类型

7. 练习:判断是否是小学生(年龄:6~12 岁)

1
2
3
4
5
6
7
8
9
// 布尔运算
public class Main {
public static void main(String[] args) {
int age = 7;
// primary student的定义: 6~12岁
boolean isPrimaryStudent = ???;
System.out.println(isPrimaryStudent ? "Yes" : "No");
}
}

8. 小结

  • 布尔运算包含比较运算、逻辑运算和三元运算。
  • &&|| 都是 短路运算符,可能会阻止后续表达式执行。
  • 三元运算符也是“短路运算”,只会计算其中一个表达式。
  • 三元运算中 xy 的类型必须一致。

布尔运算
https://cryocore1225.github.io/java/j1/d9cb6954.html
作者
Cryocore1225
更新于
2025年12月7日
许可协议