布尔类型(boolean)是计算机编程中用于表示逻辑值的一种基本数据类型,它只有两个可能的值:true(真)和false(假)。布尔运算是基于这些逻辑值的运算,主要用于比较和逻辑决策。
以下是几种常见的布尔运算符及其用法:
-
比较运算符:用于比较两个值的大小或相等性。
>:大于>=:大于或等于<:小于<=:小于或等于==:等于!=:不等于
-
与运算(逻辑与)
&&:当两个布尔表达式都为true时,结果为true。 -
或运算(逻辑或)
||:如果两个布尔表达式中至少有一个为true,结果为true。 -
非运算(逻辑非)
!:对布尔值取反,即true变为false,false变为true。
以下是一些布尔运算的示例:
boolean isGreater = 5 > 3; // 结果为true,因为5大于3。
int age = 12;
boolean isZero = age == 0; // 结果为false,因为age的值是12,不等于0。
boolean isNonZero = !isZero; // 结果为true,因为isZero是false,取反后变为true。
boolean isAdult = age >= 18; // 结果为false,因为age的值是12,小于18。
boolean isTeenager = age > 6 && age < 18; // 结果为true,因为age的值是12,大于6且小于18。
在布尔运算中,运算符的优先级决定了表达式的计算顺序。从高到低,优先级依次为:
- 非运算(
!) - 比较运算符(
>,>=,<,<=,==,!=) - 与运算(
&&) - 或运算(
||)
短路运算
布尔运算中的短路特性是一个重要的概念,它指的是在执行布尔表达式时,如果已经可以根据当前的计算结果确定整个表达式的结果,那么后续的运算就不会再执行。这种特性可以提高程序的效率,并且在某些情况下避免潜在的错误。
在与运算(&&)中,如果第一个操作数为false,那么无论第二个操作数是什么,整个表达式的结果都将是false。因此,编译器或解释器会停止计算第二个操作数,直接返回false。这就是所谓的“短路”。
例如,在下面的代码中:
public class Main {
public static void main(String[] args) {
boolean b = 5 < 3; // b 的值为 false
boolean result = b && (5 / 0 > 0); // 由于 b 为 false,短路,不计算后面的表达式
System.out.println(result); // 输出结果为 false
}
}
由于b的值为false,表达式b && (5 / 0 > 0)中的(5 / 0 > 0)部分不会被执行,因此不会因为除以零而导致错误。
相反,如果变量b的值为true,那么表达式将不会短路,而是会执行第二个操作数。但由于b在这个例子中是false,所以不会发生除以零的错误。
对于或运算(||),如果第一个操作数为true,那么无论第二个操作数是什么,整个表达式的结果都将是true。因此,如果第一个操作数已经确定为true,后续的运算同样会被短路,不再执行。
例如:
boolean result = true || (5 / 0 > 0); // 由于第一个操作数为 true,短路,不计算后面的表达式
// 结果为 true,后面的表达式不会被执行
三元运算符
Java语言中的三元条件运算符(?:)是一种简洁的条件表达式,它允许你根据一个布尔条件选择两个值中的一个。这种运算符的一般形式是condition ? expr1 : expr2,其中condition是一个布尔表达式,expr1和expr2是两个表达式,它们的类型必须相同。
如果condition的结果为true,则返回expr1的结果;如果condition的结果为false,则返回expr2的结果。三元运算符在执行时会首先评估condition,然后根据结果决定计算expr1还是expr2,但不会同时计算两者。
下面是一个使用三元运算符的例子,它实现了求整数绝对值的功能:
public class Main {
public static void main(String[] args) {
int n = -100;
int x = n >= 0 ? n : -n; // 如果 n 大于或等于 0,x 等于 n;否则,x 等于 -n
System.out.println(x); // 输出结果为 100
}
}
在这个例子中,n >= 0是一个布尔条件,如果这个条件为true(即n是非负数),则x的值就是n;如果条件为false(即n是负数),x的值就是-n。这样,无论n的初始值是多少,x最终都会是n的绝对值。

