Java运算符:2种短路逻辑运算符

news2025/1/20 5:04:33

短路逻辑运算符用于处理布尔类型的值,即真(true)和假(false)。

Java提供了2种短路逻辑运算符

  • 与(&&)
  • 或(||)

它们在控制流程、条件判断以及逻辑表达式中发挥着核心作用。本文将逐一介绍这些逻辑运算符,并通过典型例子展示其应用场景。

1. 短路与(&&)

与运算符(&&)用于连接两个布尔表达式,只有当两边的表达式都为真时,结果才为真。

 // 短路与
 System.out.println("true && true 的结果:" + (true && true));
 System.out.println("true && false 的结果:" + (true && false));
 System.out.println("false && true 的结果:" + (false && true));
 System.out.println("false && false 的结果:" + (false && false));

在这里插入图片描述

逻辑与运算符两边的表达式可以是boolean类型的变量:

boolean isValidUsername = true;
boolean isValidPassword = false;

System.out.println("isValidUsername && isValidPassword 的结果:" + (isValidUsername && isValidPassword));

也可以是结果为boolean类型的表达式:

boolean isAllValid = (7 > 3) && (4 < 5);
或者
boolean isAllValid = compare(7,3) && compare(5,4);
public boolean compare(int num1, int num2) {
  return num1 > num2;
}

逻辑与遵循短路原则,即如果左边的表达式为假,则不会继续评估右边的表达式,因为无论右边结果如何,整体结果都已经确定为假。

public static void main(String[] args) {
        // 演示短路与,&&运算符两边是函数调用
        System.out.println("短路与演示:isGreat1 && isGreat2 :" + (isGreate(3,7) && isGreate(7,3)) );
}

private static boolean isGreate(int num1, int num2) {
        System.out.println(String.format("判断num1:【%d】 是否大于【num2】:%d", num1, num2));
        return num1 > num2;
 }

在这里插入图片描述
如上所示,逻辑与运算符左边的表达式返回结果为false,则右边的表达式不会被执行,因为此时已经可以判断逻辑与运算结果为false,无需继续计算右边表达式的结果。

交换上面代码逻辑与运算符左右两边的表达式,使得短路与运算符左边的表达式结果为ture。如下图,虽然最终整个表达式结果仍然是false,但是左右两边的表达式都有执行:

在这里插入图片描述

场景示例

考虑用户登录验证的场景,我们需要检查用户名和密码是否同时有效:

在这里插入图片描述

boolean isValidUsername = checkUsername(username);
boolean isValidPassword = checkPassword(password);

if (isValidUsername && isValidPassword) {
    System.out.println("登录成功!");
} else {
    System.out.println("用户名或密码错误。");
}

在这个例子中,&&运算符确保了只有当isValidUsernameisValidPassword均为true时,才会输出“登录成功!”的消息,否则直接提示错误信息,避免了不必要的密码验证。

2. 短路或(||)

或运算符(||)用于连接两个布尔表达式,只要两边的表达式中有一个为真,结果就为真。

// 短路或
System.out.println("true || true 的结果:" + (true || true));
System.out.println("true || false 的结果:" + (true || false));
System.out.println("false || true 的结果:" + (false || true));
System.out.println("false || false 的结果:" + (false || false));

在这里插入图片描述

同样遵循短路原则,若左边表达式为真,则不会继续评估右边表达式。

在这里插入图片描述

因为短路与运算符左侧的表达式结果为true,整个表达式的结果肯定为true,无需继续判断右侧表达式的结果,所以上图中只有一次函数调用的日志。

如果逻辑与运算符左边表达式的结果为false呢?

如下图所示,这种情况下,就不会出现短路现象,两边的表达式都会执行。

在这里插入图片描述

场景示例

在这里插入图片描述

去女朋友家见丈母娘,丈母娘说:“必须有车或者房子,否则趁早分手”:

boolean hasCar= boyFriend.hasCar();
boolean hasHouse= boyFriend.hasHouse();

if (hasCar|| hasHouse) {
    System.out.println("叫妈吧,好女婿。");
} else {
    System.out.println("没门,你以为你是郭有才啊。");
}

此例中,只要男朋友有车(hasCar)或者有房(hasHouse),丈母娘就同意。

总结

在这里插入图片描述

  • 都是双目运算符
  • 都有短路效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1681930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VMware17虚拟机安装Kali Linux2024详解

目录 简介 一、环境搭建 二、下载ISO镜像 三、新建虚拟机 为虚拟机选择合适的操作系统类型和版本 分配适当的内存、硬盘空间和其他虚拟机配置选项 四、硬件配置 编辑虚拟机设置 选择安装介质 五、界面化安装配置 简介 Kali Linux是一个基于Debian的Linux发行版&#…

企业指标设计方法:构建高效指标体系

指标设计是企业战略落地、经营决策支持和绩效评估的基础。在数字化转型的大背景下&#xff0c;准确有效的指标体系能够帮助企业快速响应市场变化&#xff0c;优化资源配置&#xff0c;提升运营效率。因此&#xff0c;科学合理的指标设计不仅是技术实现的问题&#xff0c;更是企…

学习笔记-C++

目录 1、何为常量 2、关键字 3、实型 4、水平制表符 5、string字符串 6、C中的三目运算符 7、随机数种子 8、结构体 9、各的区 10、引用 11、函数默认参数 12、函数占位参数 13、函数重载 14、私有属性 15、让另一个类作为本类的成员 16、声明和实现的文件…

Linux(八) 进程间通信

目录 一、什么进程间通信 1.1 进程间通信的目的 1.2 进程间通信的概念 1.3 进程间通信的分类 二、 管道/匿名管道(pipe) 2.1 什么是管道 2.2 管道的创建 2.3 站在文件描述符角度-深度理解管道 2.4 站在内核角度-管道本质 2.5 匿名管道的读写 2.6 匿名管道的读写规则 …

WSL2-Ubuntu(深度学习环境搭建)

1.在Windows的WSL2上安装Ubuntu 流程可参考&#xff1a;https://www.bilibili.com/video/BV1mX4y177dJ 注意&#xff1a;中间可能需要使用命令wsl --update更新一下wsl。 2.WSL数据迁移 按照下面流程&#xff1a;开始菜单->设置->应用->安装的应用->搜索“ubun…

为何要使用静态或动态住宅IP代理来运营亚马逊?

跨境电商作为当前主流的行业&#xff0c;在运营亚马逊等跨境电商平台时&#xff0c;使用静态或动态住宅IP代理成为了一个重要的策略。这种策略不仅有助于提升运营效率&#xff0c;还能在一定程度上保护卖家的隐私和账号安全。 静态住宅IP代理在亚马逊运营中的优势。 静态住宅I…

工业供热低碳化发展背景下 高温热泵市场发展前景广阔

工业供热低碳化发展背景下 高温热泵市场发展前景广阔 高温热泵是一种将低温热源的热能转换成高温热源的装置。高温热泵是热泵的一种&#xff0c;其制热出水温度高于普通热泵。高温热泵可直接替代传统燃煤锅炉&#xff0c;将工业生产过程中产生的中低温热量&#xff0c;转化为高…

KCNScrew Pack for mac v1.8(2024.05.15)激活版 序列号查询软件

KCNScrew Pack是一款Mac序列号查询软件&#xff0c;内置强大的序列号数据库。软件包含数千款软件序列号&#xff0c;基本上大多数常用软件你都可以找到相应的序列号。 KCNScrew Pack for mac v1.8(2024.05.15)激活版 序列号查询软件 主界面 打开KCNScrew可以看到如下的主界面&…

CSP备考---2023大湾区比赛易错题

解析 9.D无向图公式&#xff1a;有向图公式&#xff1a;本题考察无向图&#xff0c;故 12.D公式&#xff1a; 14.B有三种情况&#xff1a;1男2女、2男1女、3女。 17.错 因为12300400000超过了int的范围 18.错 21.D 23.对 25.A 26.D代入程序 31.C 33.C 36.D 37.A …

2024 年第四届长三角高校数学建模竞赛赛题B题超详细解题思路+问题一二代码分享

2024年第四届长三角数学建模竞赛B题详细解题思路 赛道B&#xff1a;人工智能范式的物理化学家 长三角分享资料&#xff08;问题一代码论文思路&#xff09;链接&#xff08;18点更新&#xff09;&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1lteKvIWNZ4v-Gd7oOcg…

【MySQL】 查询进阶 | 聚合查询 | 联合查询 | 聚合函数 | 笛卡尔积 | 内连接 | 外链接 | 自连接 | 子查询 | 合并查询

文章目录 查询进阶1.聚合查询1.聚合函数2.group by 子句3.having 2.联合查询笛卡尔积 1.内连接查询许仙同学的成绩查询所有同学的总成绩查询所有同学的每门课程和分数&#xff1a; 2.外连接1.内连接&#xff1a;2.左外连接3.右外链接 3.自连接4.子查询单行子查询多行子查询查询…

KNN算法项目实战之酒的分类

加载数据集 from sklearn.datasets import load_winewine_dataset load_wine()数据集有什么&#xff1f; data&#xff1a;数据 target&#xff1a;目标分类 target_names&#xff1a;目标分类名称 DESCR&#xff1a;数据描述 features_names&#xff1a;特征变量名称 查…

微信在线预约系统怎么做_让您的业务更高效!

在这个数字化飞速发展的时代&#xff0c;传统的业务预约方式已经逐渐无法满足现代人的需求。随着智能手机的普及和微信用户数量的不断攀升&#xff0c;微信在线预约系统已成为许多企业和个人提升服务效率、优化客户体验的不二之选。今天&#xff0c;就让我们一起探讨微信在线预…

美港通正规股票交易市场人民币突然拉升,市场开启“大风车”模式?

查查配今天上午,市场又开启了“大风车”模式,多个热点轮番拉升。 一则关于地产行业利好的小作文流出,地产产业链上午爆发,租售同权、房地产服务、房地产开发等板块大涨,光大嘉宝、天地源等个股涨停。万科A涨超4%。 美港通证券以其专业的服务和较低的管理费用在市场中受到不少…

[Cocos Creator 3.5赛车游戏]第三节 新建项目

环境已经配置好&#xff0c;现在您将真正的开始开发您的项目&#xff0c;开发项目的第一步是新建项目。所以现在请关闭上一个步骤打开的Cocos Creator窗口&#xff0c;回到CocosDashboard&#xff0c;点击“新建”按钮&#xff1a; 选择“模板”选项卡&#xff0c;因为您即将开…

力扣HOT100 - 62. 不同路径

解题思路&#xff1a; 动态规划 注意要初始化第一行和第一列的值 class Solution {public int uniquePaths(int m, int n) {int[][] dp new int[m][n];for (int i 0; i < m; i) {dp[i][0] 1;}for (int j 0; j < n; j) {dp[0][j] 1;}for (int i 1; i < m; i) {…

应用层协议【HTTP和HTTPS】

1.概念 1.1 协议 协议是指在计算机通信和网络通信中&#xff0c;为了实现数据交换而建立的一套规则、约定或者标准。它定义了通信双方之间的通信格式、传输方式、数据的含义、错误处理等细节&#xff0c;从而确保通信的可靠性、有效性和安全性。 >1在计算机网络中&#x…

大模型相关内容的研究学习

大模型研究学习 1.大模型的“幻觉” 幻觉可以分为事实性幻觉和忠实性幻觉。 事实性幻觉&#xff0c;是指模型生成的内容与可验证的现实世界事实不一致。 比如问模型“第一个在月球上行走的人是谁&#xff1f;”&#xff0c;模型回复“Charles Lindbergh在1951年月球先驱任务…

高稳定LED驱动IC防干扰数显驱动控制器热水器LED驱动芯片VK1650 SOP16/DIP16 原厂FAE支持

产品型号&#xff1a;VK1650 产品品牌&#xff1a;永嘉微电/VINKA 封装形式&#xff1a;SOP16/DIP16 工程服务&#xff0c;技术支持&#xff01; 概述 VK1650是一种带键盘扫描电路接口的 LED 驱动控制专用芯片&#xff0c;内部集成有数据锁存器、LED 驱动、键盘扫描等电路。…

Python筑基之旅-溯源及发展

目录 一、Python的起源 二、Python的版本更替及变化 三、Python的优缺点 四、Python的发展方向 五、Python之禅 六、推荐专栏/主页&#xff1a; 1、Python函数之旅&#xff1a;Functions 2、Python算法之旅&#xff1a;Algorithms 3、个人主页&#xff1a;https://mye…