当前位置: 首页 > news >正文

Java基础(三):逻辑运算符详解

Java基础系列文章

Java基础(一):发展史、技术体系与JDK环境配置详解

Java基础(二):八种基本数据类型详解

Java基础(三):逻辑运算符详解

目录

  • 一、什么是逻辑运算符?
  • 二、基础逻辑运算符(3种)
    • 1、&&逻辑与(短路与)
    • 2、||逻辑或(短路或)
    • 3、!逻辑非
  • 四、非短路逻辑运算符(2种)和异或(1种)
    • 1、&与|(非短路)
    • 2、^异或
    • 五、逻辑运算符优先级
  • 总结


一、什么是逻辑运算符?

  逻辑运算符用于连接多个布尔表达式(即返回值为 truefalse 的表达式),根据逻辑规则(如与、或、非)对表达式进行运算,最终得到一个布尔值。


二、基础逻辑运算符(3种)

1、&&逻辑与(短路与)

语法:

boolean a = true, b = false;
System.out.println(a && b);  // false(全真才真)

说明:

  • 当第一个表达式为 false 时,Java 不再判断第二个表达式,直接返回 false。这种行为称为“短路”
  • 常用于防止空指针异常
if (obj != null && obj.getValue() > 10) {// 安全执行 obj.getValue()
}

2、||逻辑或(短路或)

语法:

boolean a = true, b = false;
System.out.println(a || b);  // true(有真即真)

说明:

  • 当第一个表达式为 true 时,Java 会跳过第二个表达式的计算
  • 常用于提供备选条件
if (user.isAdmin() || user.hasPermission("EDIT")) {// 允许访问
}

3、!逻辑非

语法:

boolean a = true,
System.out.println(!a);      // false(取反)

说明:

  • 对布尔表达式取反
  • 常用于状态切换条件反向
if (!isValid) {System.out.println("数据无效!");
}

四、非短路逻辑运算符(2种)和异或(1种)

  & | ^被同时用于逻辑运算位运算,源于编程语言的语法设计:当操作数为布尔值时执行逻辑运算,为整数时执行位运算。

1、&与|(非短路)

与&&和|的异同:

  • 相同点:对于逻辑运算&&和&与||和|运算返回结果一致
  • 不同点:&|始终计算两个表达式,无论第一个表达式的值如何
boolean result = (a > 0) & (b++ > 0);  // b 一定会自增

2、^异或

语法:

System.out.println(true ^ true);   // false
System.out.println(false ^ false); // false
System.out.println(true ^ false);  // true

说明:

  • 两个表达式一个为真,一个为假时,结果才为 true
  • 实际上可以用于检查两个状态是否“互斥”
boolean isSingle = true;
boolean isMarried = false;
if (isSingle ^ isMarried) {System.out.println("状态有效");
}

五、逻辑运算符优先级

优先级从高到低(部分):

  1. ! (逻辑非)
  2. &&(逻辑与)
  3. ||(逻辑或)
// 复杂表达式示例
boolean result = !false || true && false;
// 等价于:(true) || (true && false) → true// 使用括号明确意图(推荐!)
boolean safeResult = (!false) || (true && false);

总结

  &&、|| 和 ! 是逻辑运算符,用于布尔值判断,返回布尔值;而 &、|、^ 是常用于按位运算符,用于按位操作整数,返回整数(下篇文章细讲),这里&、|、^ 也可以用于逻辑运算符。

运算符名称描述
&&逻辑与(AND)两个条件都为 true 时,结果为 true
||逻辑或(OR)只要一个条件为 true,结果就是 true
!逻辑非(NOT)取反操作,将 true 变成 false,反之亦然
&位与逻辑与运算但不会短路(始终计算两侧表达式)
|位或逻辑或运算但不会短路(始终计算两侧表达式)
^异或两个条件不同为 true,相同为 false

相关文章:

  • 阿里云Elasticsearch生产环境误删数据恢复指南
  • LabVIEW网络流通信介绍
  • Elasticsearch(ES)与 OpenSearch(OS)
  • 实现 el-table 中键盘方向键导航功能vue2+vue3(类似 Excel)
  • 从0开始学习R语言--Day30--函数型分析
  • Centos 7离线部署Nginx 高效省时
  • uniapp安卓GPIO电平控制
  • Milvus【部署 03】Linux OpenEuler 环境在线+离线安装及卸载
  • 【软考高级系统架构论文】论企业集成架构设计及应用
  • Milvus【工具 01】milvus_cli和可视化工具attu安装使用
  • uniapp vue2多选模糊下拉组件
  • 住宅老年护理软件:市场洞察与发展前景
  • 顶级思维方式——认知篇十一《传习录》笔记
  • leetcode:78. 子集
  • 手机摄影后期进阶:LR调色参数黄金比例表
  • LeetCode中K个链表的链接的解法
  • 从本地到云端:通过ToolJet和cpolar构建远程开发环境实践过程
  • 操作系统 第九章 部分
  • 详解HarmonyOS NEXT仓颉开发语言中的全局弹窗
  • 2024计算机保研--哈工大、中山、国防科大(二)
  • 免费个人logo设计网站/常见的网络推广方式包括
  • 自有电脑做网站服务器/谷歌推广怎么做
  • 在家没事做建什么网站好/关键词排名优化公司哪家好
  • 北京有哪些著名网站/网络口碑营销案例
  • 无锡建站电话/seo优化推广流程
  • 建网站的工具/外贸互联网推广的