Java 提供了两个在大多数其他计算机语言中没有的有趣的布尔运算符。这就是逻辑AND和逻辑OR的特殊的短路版本。从上表可以看出,在逻辑OR的运算中,如果第一个运算数A为真,则不管第二个运算数B是真是假,其运算结果为真。
同样,在逻辑AND的运算中,如果第一个运算数A为假,则不管第二个运算数是真是假,其运算结果为假。如果运用||和&&形式,而不是|和&,那么一个运算数就能决定表达式的值,Java的短路版本就不会对第二个运算数求值,只有在需要时才对第二个运算数求值。为完成正确的功能,当右边的运算数取决于左边的运算数是真或是假时,短路版本是很有用的。例如,下面的程序语句说明了短路逻辑运算符的优点,用它来防止被0除的错误:

if (denom != 0 && num / denom > 10)

既然用了短路AND运算符,就不会有当denom为0时产生的意外运行时错误。如果该行代码使用标准AND运算符(&),它将对两个运算数都求值,当出现被0除的情况时,就会产生运行时错误。
既然短路运算符在布尔逻辑运算中有效,那么就在布尔逻辑运算中全用它,而标准的AND和OR运算符(只有一个字符)仅在位运算中使用。然而,这条规则也有例外。例如,考虑下面的语句:

if(c==1 & e++ < 100) d = 100;

这里,使用标准AND运算符(单个的&)来保证不论c是否等于1,e都被自增量。

Java基础篇:短路逻辑运算符相关推荐

  1. Java基础篇2——运算符

    Java基础篇2--运算符 1.运算符 1.1.算数运算符 +表示加法运算符 -表示减法运算符 *表示乘法运算符 /表示除法运算符 %表示取余运算符 1.2.关系运算符 所有以关系运算符作为最终运算的 ...

  2. 菜鸟学习笔记:Java基础篇2(变量、运算符、流程控制语句、方法)

    菜鸟学习笔记:Java基础篇2 变量 基本概念 变量作用域 final关键字 运算符 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 运算符优先级 Java三种流程控制语句 顺序 ...

  3. Java基础篇 学习笔记

    List item Java基础篇 学习笔记 java基础篇 第1章 计算机.程序和java概述 学习笔记 1.1什么是计算机 简单来说:计算机就是 ' 存储 ' 和 ' 处理 ' 数据的电子设备. ...

  4. java基础篇_java基础篇1

    JAVA基础篇1 注释 单行注释 //这是一个单行注释,由两个斜杠组成,不能嵌套多行注释 多行注释 /*这是一个 多行注释 ,//里面不能嵌套多行注释, 但是可以嵌套单行注释*/ 文档注释 /**ja ...

  5. 你所需要的java基础篇深入解析大汇总

    java基础篇深入解析大总结 java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规则 java基础(三) 加强型for循环与Iterator java基础(四) java运算顺序 ...

  6. Java基础篇4——数组

    Java基础篇4--数组 1.数组的概念 当需要在Java程序中记录单个数据内容时,则声明一个变量即可 当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数 组即可,一维数组本质上就是 ...

  7. Java基础篇3——流程控制

    Java基础篇3--流程控制 1.顺序结构 正常代码的流程即是顺序流程 2.分支结构 2.1.if-else分支 if(条件表达式) {语句块1; } if(条件表达式) {语句块1; } else ...

  8. Java基础篇1——变量与数据类型

    Java基础篇1--变量与数据类型 1.标识符命名规则 标识符以由大小写字母.数字.下划线(_)和美元符号($)组成,但是不能以数字开头. 大小写敏感 不能与Java语言的关键字重名 不能和Java类 ...

  9. 菜鸟学习笔记:Java基础篇7(包装类、时间相关类、文件类、异常处理类)

    菜鸟学习笔记:Java其他常用类 基本数据类型包装类 时间处理和文件处理相关类 Date时间类 SimpleDateFormat Calendar日历类 文件类 异常机制 异常的概念 Java异常处理 ...

  10. 菜鸟学习笔记:Java基础篇6(数组、字符串)

    菜鸟学习笔记:Java常用类(数组.字符串) 数组 概述 数组的定义 二维数组 数组查找和排序 查找 排序 数组运用--字符串 不可变字符序列(String) 可变字符序列(StringBuilder ...

最新文章

  1. C#的参数类型:params、out和ref
  2. OpenGL Deferred Shading延迟阴影实例
  3. android 属性动画伸缩,Android的属性动画(二)加载框圆点旋转收缩放大缩小效果的实现...
  4. Scala入门到精通——第二十七节 Scala操纵XML
  5. 谈及未来的 AI, 也许你已身处其中 —— 记 InfoQ 对青云QingCloud 联合创始人林源的采访...
  6. Vue中 $ref 的用法
  7. [noip-2013] 货车运输
  8. Flume监听文件夹中的文件变化_并把文件下沉到hdfs
  9. 使用Java对sftp带有中文路径的文件夹进行下载,乱码打不开文件夹
  10. C语言——指针篇(二)指针和数组之内存分配和初始化
  11. python猜单词游戏_python 猜单词游戏 代码
  12. xmind zen 用法
  13. 微信活动报名源码php,fb1357 Thinkphp活动报名发布微信小程序源码 聚会活动报名小程序含说明...
  14. 四十个鹏城春夏,一场数字繁花
  15. 艾美捷胆固醇肉豆蔻酸酯说明书和相关研究
  16. wps word文档生成目录的时候显示断裂会生成大纲怎么办_如何用Word编辑参考文献...
  17. Linux命令行中对虚拟网卡的增删改查
  18. MCU控制的电池管理是成功的物联网实现的关键
  19. 【干货】-- 带你抓取并分析知乎高评分电影
  20. AVL树的 插入 和 删除

热门文章

  1. [转载] python语言中表示赋值的符号是_Python 语言中 asterisk 符号用法小结
  2. [转载] python中的内置异常结构
  3. [转载] Java中如何在方法中return返回多个值
  4. django 数据库交互2
  5. [家里蹲大学数学杂志]第410期定积分难题
  6. Spring Setting
  7. 数据结构上机实践第14周项目3 - 是否二叉排序树
  8. php脚本日志文件,php脚本-定期删除日志文件,删除历史日志 保留最近7天
  9. stm32 通用bootloader_stm32最简单的实现BootLoader
  10. oracle怎么截取long类型,Oracle 数据库中 Long 类型字段的读取