长运算符和短运算符
Kang Lv3

今天看书突然看到了长运算符和短运算符,文中说&&和||是短运算符,&和|是长运算符,当时就感觉很疑惑,&&比&长,怎么反而是短运算符了呢?
想着就去百度了一下长运算符和短运算符,然而好像并没有这个概念。。。于是我找到了这本书的英文原版,如下

HeadFirstJava

  • Short Circuit Operators:短路运算符
  • Non Short Circuit Operators:非短路运算符

(果然是翻译问题)那下面介绍一个短路运算符和非短路运算符

运算符

短路运算符

短路运算符就是从左到右的运算中,前者满足要求,就不执行后者了。比如

  • A && B:从左到右执行,如果A判断为false,则不会去判断B条件,结果为false;如果判断A为true,同时判断B为true,结果为true。
  • A || B:从左到右执行,如果A判断为false,同时判断B为false,则结果为false;如果A为true,就不会去判断B条件,结果为true。

所以&&和||右侧最好不要有赋值的语句

非短路运算符

无论如何都会执行&和|两侧的内容

举例

对于 && 而言

1
2
3
if (refVar != null && refVar.isValidType()) {

}

如果refVal!=null为false,程序处于短路状态,就不会执行refVal.isValidType();
如果refVal=null为true,才会执行refVal.isValidType()

但是对 & 而言

1
2
3
if (refVar != null & refVar.isValidType()) {

}

无论refVal!=null的判断如何,都会执行refVal.isValidType()

  • 本文标题:长运算符和短运算符
  • 本文作者:Kang
  • 创建时间:2021-04-16 15:58:04
  • 本文链接:ykhou.github.io2021/04/16/长运算符和短运算符/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!