《Java 7程序设计入门经典》一2.9 具有“短路”功能的逻辑运算符

简介: 本节书摘来自华章出版社《Java 7程序设计入门经典》一书中的第2章,第2.9节,作者(美)Herbert Schildt Dale Skrien,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.9 具有“短路”功能的逻辑运算符

Java为AND和OR逻辑运算符提供了具有“短路”功能的版本,来用于编写更有效率的代码。为了了解其原因,考虑以下情形:在一个与操作中,若第一个操作数是假的,无论第二个操作数是什么,结果总是假的。在一个或操作中,若第一个操作数是真的,无论第二个操作数的值是什么,结果总是真的。于是,在以上两种情况下,没有必要考虑第二个操作数。通过不考虑第二个操作数,节约了时间,代码更加有效。
具有“短路”功能的AND运算符是&&,具有“短路”功能的OR运算符是||。与其对应的普通版本分别是&和|。在普通版本和“短路”版本的唯一区别在于普通版本总对每个变量都予以考虑,而“短路”版本只在需要时考虑第二个变量。
下面的程序演示了短路AND运算符的用法。程序判定变量d的值是否是变量n的值的因子。通过取求模操作来完成判别。如果n/d的余数是0,那么d就是因子。但是,由于去求模运算符涉及除法,因此用“短路”形式的与运算符来防止除以0的错误。
image

为了防止除以0带来的错误,if语句首先检查变量d是否等于0。若等于0,“短路”与在此停止,不再执行取模操作。所以在第一个测试中,d是2,且执行了取模操作。第二个测试失败了,是因为d已设置为0,跳过了取模操作,防止了除以0带来的错误。最后的测试试图使用普通的与运算符。这使两个操作数都会考虑,导致了在除以0时发生了运行时错误。
最后提一点:Java的正式规范中把具有“短路”功能的运算符称为条件与(conditional-or)运算符或条件或(conditional-and)运算符。但也常使用“具有‘短路’功能的运算符”这个术语。
image

image

相关文章
|
12天前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
74 34
|
1月前
|
安全 Java 测试技术
🎉Java零基础:全面解析枚举的强大功能
【10月更文挑战第19天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
119 60
|
2月前
|
Java 测试技术 开发者
💡Java 零基础:彻底掌握 for 循环,打造高效程序设计
【10月更文挑战第15天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
125 63
|
1月前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
30 2
|
2月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
67 2
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
|
2月前
|
Java 程序员
在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。
【10月更文挑战第13天】在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。本文介绍了Java关键字的基本概念及其重要性,并通过定义类和对象、控制流程、访问修饰符等示例,展示了关键字的实际应用。掌握这些关键字,是成为优秀Java程序员的基础。
28 3
|
2月前
|
Java 数据安全/隐私保护
Java ffmpeg 实现视频加文字/图片水印功能
【10月更文挑战第22天】在 Java 中使用 FFmpeg 实现视频加文字或图片水印功能,需先安装 FFmpeg 并添加依赖(如 JavaCV)。通过构建 FFmpeg 命令行参数,使用 `drawtext` 滤镜添加文字水印,或使用 `overlay` 滤镜添加图片水印。示例代码展示了如何使用 JavaCV 实现文字水印。
151 1
|
2月前
|
机器学习/深度学习 算法 Java
通过 Java Vector API 利用 SIMD 的强大功能
通过 Java Vector API 利用 SIMD 的强大功能
59 10
|
2月前
|
Oracle 安全 Java
Java 22 为开发人员带来了重大增强功能
Java 22 为开发人员带来了重大增强功能
47 9
|
2月前
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
30 1
下一篇
DataWorks