java中 与 或 非 怎么写
- 后端开发
- 2025-07-28
- 7
Java编程中,逻辑运算符用于组合和操作布尔值(即 true 和 false),主要的逻辑运算符包括与(AND)、或(OR)和非(NOT),这些运算符在控制程序流程、条件判断等方面起着至关重要的作用,下面将详细介绍Java中与、或、非的写法及其使用方法。
与(AND)运算符
符号与用法
- 符号:&&(短路与)、&(按位与)
- 功能:当使用 && 时,如果第一个布尔表达式为 false,则整个表达式结果为 false,且第二个表达式不会被评估(短路),而 & 则会评估两个表达式。
示例代码
| 表达式 | 描述 | 结果 |
|---|---|---|
| true && true | 两个条件都为真 | true |
| true && false | 一个条件为假 | false |
| false && true | 一个条件为假 | false |
| false && false | 两个条件都为假 | false |
public class AndOperatorExample { public static void main(String[] args) { boolean a = true; boolean b = false; // 使用 && 运算符 boolean result1 = a && b; // false System.out.println("a && b = " + result1); // 使用 & 运算符 boolean result2 = a & b; // false System.out.println("a & b = " + result2); // 短路特性示例 boolean c = false; boolean result3 = c && performTask(); // performTask() 不会被调用 System.out.println("c && performTask() = " + result3); // 非短路特性示例 boolean result4 = c & performTask(); // performTask() 会被调用 System.out.println("c & performTask() = " + result4); } public static boolean performTask() { System.out.println("performTask() 被调用"); return true; } }
输出:
a && b = false a & b = false c && performTask() = false performTask() 被调用 c & performTask() = false
说明
- && 是短路与运算符,当第一个条件为 false 时,第二个条件不会被评估,这在某些情况下可以提高效率或避免不必要的计算。
- & 是按位与运算符,也会对布尔值进行与操作,但不具备短路特性,无论第一个条件是否为 false,第二个条件都会被评估。
或(OR)运算符
符号与用法
- 符号:(短路或)、(按位或)
- 功能:当使用 时,如果第一个布尔表达式为 true,则整个表达式结果为 true,且第二个表达式不会被评估(短路),而 则会评估两个表达式。
示例代码
| 表达式 | 描述 | 结果 |
|---|---|---|
| true || true | 任一条件为真 | true |
| true || false | 一个条件为真 | true |
| false || true | 一个条件为真 | true |
| false || false | 两个条件都为假 | false |
public class OrOperatorExample { public static void main(String[] args) { boolean a = true; boolean b = false; // 使用 || 运算符 boolean result1 = a || b; // true System.out.println("a || b = " + result1); // 使用 | 运算符 boolean result2 = a | b; // true System.out.println("a | b = " + result2); // 短路特性示例 boolean c = true; boolean result3 = c || performTask(); // performTask() 不会被调用 System.out.println("c || performTask() = " + result3); // 非短路特性示例 boolean result4 = c | performTask(); // performTask() 会被调用 System.out.println("c | performTask() = " + result4); } public static boolean performTask() { System.out.println("performTask() 被调用"); return false; } }
输出:

说明
- 是短路或运算符,当第一个条件为 true 时,第二个条件不会被评估,这在某些情况下可以提高效率或避免不必要的计算。
- 是按位或运算符,也会对布尔值进行或操作,但不具备短路特性,无论第一个条件是否为 true,第二个条件都会被评估。
非(NOT)运算符
符号与用法
- 符号:
- 功能:用于取反布尔值,即将 true 变为 false,将 false 变为 true。
示例代码
| 表达式 | 描述 | 结果 |
|---|---|---|
| !true | 取反真 | false |
| !false | 取反假 | true |
public class NotOperatorExample { public static void main(String[] args) { boolean a = true; boolean b = false; // 使用 ! 运算符 boolean result1 = !a; // false System.out.println("!a = " + result1); boolean result2 = !b; // true System.out.println("!b = " + result2); // 结合其他运算符使用 boolean result3 = !(a && b); // !(true && false) = !false = true System.out.println("!(a && b) = " + result3); boolean result4 = (!a) || b; // false || false = false System.out.println("(!a) || b = " + result4); } }
输出:
!a = false !b = true !(a && b) = true (!a) || b = false
说明
- 运算符用于反转布尔值,常用于条件判断中需要取反的情况。
- 在复杂表达式中,非运算符的优先级较高,通常需要使用括号来明确运算顺序。
综合示例
下面通过一个综合示例展示如何在条件判断中使用与、或、非运算符。

输出:
可以获得奖励: false 需要加班: false 可以休息: true 有权限: false
说明
- 在实际应用中,逻辑运算符常常结合使用,以构建复杂的条件判断。
- 使用括号可以明确运算顺序,避免逻辑错误,在 canGetReward 中,先计算括号内的 isHoliday && score >= 80,然后再与 score >= 90 进行或运算。
注意事项
-
短路特性:&& 和 具有短路特性,即当左边的表达式已经能决定最终结果时,右边的表达式不会被评估,这在某些情况下可以提高性能或避免潜在的错误(如避免调用可能抛出异常的方法)。
-
优先级:逻辑运算符的优先级从高到低依次为 、&&、,在复杂表达式中,建议使用括号来明确运算顺序,增加代码的可读性。

-
与按位运算符的区别:&& 和 是逻辑运算符,专门用于布尔值的逻辑运算;而 & 和 是按位运算符,用于整数类型的位运算,虽然它们在布尔值上也可以工作,但行为有所不同,尤其是短路特性。
- && 是逻辑与运算符,具有短路特性,当左边的表达式为 false 时,整个表达式结果为 false,且右边的表达式不会被评估,适用于布尔逻辑判断。
- & 是按位与运算符,也可以用于布尔值的逻辑与操作,但不具备短路特性,无论左边表达式的结果如何,右边的表达式都会被评估。& 还可以用于整数的按位与操作。
- 使用 && 可以利用其短路特性,提高代码效率和安全性,在条件判断中,如果左边的表达式已经决定了最终结果,右边的表达式不会被执行,这可以避免不必要的计算或潜在的异常。
FAQs
Q1: && 和 & 有什么区别?
A1:
Q2: 为什么有时候使用 && 而不是 &?
A2: