《Java 7程序设计入门经典》一2.9 具有“短路”功能的逻辑运算符-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: