当前位置:首页 > 后端开发 > 正文

java中 与 或 非 怎么写

Java中,逻辑与用 &&,逻辑或用 ||,逻辑非用 !。

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; } }

输出:

java中 与 或 非 怎么写 第1张

说明

  • 是短路或运算符,当第一个条件为 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

说明

  • 运算符用于反转布尔值,常用于条件判断中需要取反的情况。
  • 在复杂表达式中,非运算符的优先级较高,通常需要使用括号来明确运算顺序。

综合示例

下面通过一个综合示例展示如何在条件判断中使用与、或、非运算符。

java中 与 或 非 怎么写 第2张

输出:

可以获得奖励: false 需要加班: false 可以休息: true 有权限: false

说明

  • 在实际应用中,逻辑运算符常常结合使用,以构建复杂的条件判断。
  • 使用括号可以明确运算顺序,避免逻辑错误,在 canGetReward 中,先计算括号内的 isHoliday && score >= 80,然后再与 score >= 90 进行或运算。

注意事项

  • 短路特性:&& 和 具有短路特性,即当左边的表达式已经能决定最终结果时,右边的表达式不会被评估,这在某些情况下可以提高性能或避免潜在的错误(如避免调用可能抛出异常的方法)。

  • 优先级:逻辑运算符的优先级从高到低依次为 、&&、,在复杂表达式中,建议使用括号来明确运算顺序,增加代码的可读性。

    java中 与 或 非 怎么写 第3张

  • 与按位运算符的区别:&& 和 是逻辑运算符,专门用于布尔值的逻辑运算;而 & 和 是按位运算符,用于整数类型的位运算,虽然它们在布尔值上也可以工作,但行为有所不同,尤其是短路特性。

  • FAQs

    Q1: && 和 & 有什么区别?

    A1:

    • && 是逻辑与运算符,具有短路特性,当左边的表达式为 false 时,整个表达式结果为 false,且右边的表达式不会被评估,适用于布尔逻辑判断。
    • & 是按位与运算符,也可以用于布尔值的逻辑与操作,但不具备短路特性,无论左边表达式的结果如何,右边的表达式都会被评估。& 还可以用于整数的按位与操作。

    Q2: 为什么有时候使用 && 而不是 &?

    A2:

    • 使用 && 可以利用其短路特性,提高代码效率和安全性,在条件判断中,如果左边的表达式已经决定了最终结果,右边的表达式不会被执行,这可以避免不必要的计算或潜在的异常。

0