长运算符和短运算符

今天看书突然看到了长运算符和短运算符,文中说&&和||是短运算符,&和|是长运算符,当时就感觉很疑惑,&&比&长,怎么反而是短运算符了呢?
想着就去百度了一下长运算符和短运算符,然而好像并没有这个概念。。。于是我找到了这本书的英文原版,如下
- 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 | if (refVar != null && refVar.isValidType()) { |
如果refVal!=null
为false,程序处于短路状态,就不会执行refVal.isValidType()
;
如果refVal=null
为true,才会执行refVal.isValidType()
。
但是对 & 而言
1 | if (refVar != null & refVar.isValidType()) { |
无论refVal!=null
的判断如何,都会执行refVal.isValidType()
。
- 本文标题:长运算符和短运算符
- 本文作者:Kang
- 创建时间:2021-04-16 15:58:04
- 本文链接:ykhou.github.io2021/04/16/长运算符和短运算符/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!