迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 中的逻辑运算符和短路

作者:迹忆客 最近更新:2023/11/14 浏览次数:

这篇文章对 java 中的短路进行了深入的了解,但是在 java 中进行短路之前,你必须知道什么是逻辑运算符以及如何将它们与各种表达式一起使用。


Java 中逻辑运算符的使用

逻辑运算符用于检查 2 个或多个返回布尔值的表达式的结果。

逻辑运算符也称为布尔运算符,它们计算的多个表达式称为复合表达式。它们是逻辑 AND (&&)、逻辑 OR (||) 和逻辑 NOT (!)


Java 中非运算符 (!) 的使用

Not (!) 运算符是唯一的一元逻辑运算符。它检查一个条件并返回相反的结果,这意味着如果条件为,运算符将返回

import java.io.*;
public class NotExample {
  public static void main(String args[]) {
    int big = 25, small = 10;

    System.out.println("!(big < small) = " + !(big < small));
  }
}

输出:

!(big < small) = true

在这里,(big < small) 返回 false。由于条件之前存在 Not (!) 运算符,所以答案变为 true


在 Java 中使用短路

Java 中的短路是在评估逻辑表达式之后执行的跳过操作,因为最终结果是在评估整个表达式之前获得的。

Java 中的短路可能发生在:

  1. 逻辑 AND (&&) 运算符 - 有两种情况。如果第一个表达式返回 true,我们将检查第二个表达式是否也给出 true,返回 true 作为最终答案。

    但是,如果第一个表达式在计算后返回 false,并且第二个表达式由于条件已经失败而未计算,则会发生短路。

import java.io.*;
public class ANDExample {
  public static void main(String arg[]) {
    if (false && true && true) {
      //
    } else {
      System.out.println("First false, condition failed, Short Circuiting!");
    }

    if (true && true && true) {
      System.out.println("All true, no short circuiting!");
    }
  }
}

输出:

First false, condition failed, Short Circuiting!
All true, no short circuiting!
  1. 逻辑或 (||) 运算符 - OR (||) 运算符表示如果第一个或第二个表达式返回 true,则条件满足,代码将运行。

    但是,如果我们的第一个条件返回 true,则会发生短路,并且第二个表达式将被跳过,因为我们的条件已经满足。

public class ORExample {
  public static void main(String arg[]) {
    if (true || false || false) {
      System.out.println("True found, condition met, short circuit!");
    } else {
      //
    }
    if (false || true) {
      System.out.println("True found at end, condition met, no short circuit.");
    }
  }
}

输出:

True found, condition met, short circuit!
True found at end, condition met, no short circuit.

在 Java 中使用按位 AND (&) 和按位 OR (|) 运算符时不会发生短路。

And (&) 运算符 - 检查所有表达式的结果,当且仅当所有表达式为 true 时才返回 true

Or (|) 运算符 - 比较所有表达式的结果。如果其中一个表达式为,则输出将返回

if (false | true) {
  // Both conditions evaluated
}
if (false || true) {
  // Only one condition evaluated
}

这两个条件都将在第一个 if 语句中计算,但在第二个 if 语句中,只计算第一个条件,跳过第二个条件。

只有在使用逻辑 AND (&&) 和逻辑 OR (||) 时才会执行短路。


在 Java 中使用短路的优点

如果预定条件已经满足或失败,java 中的短路有助于避免特定时间复杂的任务,从而减少计算时间和复杂性。

例如,如果你检查 N 个表达式的条件,则需要它们返回 true。如果在任何位置计算返回 false 的表达式,例如 F«N 的 F,它可以显着减少执行时间。

编译器不计算表达式的总数,而是跳过 N-F 项。


在 Java 中使用短路的缺点

  1. 绕过逻辑:在某些情况下,短路可以忽略逻辑。假设我们正在使用具有两个条件的逻辑 OR。第一个条件返回 truefalse,第二个条件调用另一个方法来完成程序特定部分的处理。

    如果满足第一个条件并发生短路,则不会调用对处理至关重要的另一个函数,从而绕过逻辑产生问题。

  2. 执行效率较低:短路可以减少代码执行时间,并在某些情况下增加它。一些编译器涉及不同的检查周期来验证短路评估,增加了额外的计算。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便