关于Java里面的短路逻辑运算符
【关于Java里面的短路逻辑运算符】逻辑运算符执行的是短路求值
所谓短路,就是当参与运算的一个操作数已经足以推断出这个表达式的值的时候,另外一个操作数(有可能是表达式)就不会执行
比如:
static boolean f1() { System.out.println( "function f1 called." );
return true;
}
static boolean f2() { System.out.println( "function f2 called." );
return false;
}
if ( false && f1() ) {} // f1不会被调用
if ( true || f2() ){} // f2不会被调用
由于&&要求它的参与操作的两个操作数都是布尔值真,才得真,所以只要得出其中一个为假,那么另一部分的表达式就不会被求值(在上面的例子中是f1()不会被调用)
同理由于||要求它的参与操作的两个操作数只要其中之一为真,就得真,所以只要得出其中一个为真,那么另一部分也不会被求值(在上面的例子中是f2()不会被调用)
这就是逻辑操作符所谓的“短路求值”
位操作没有这一特性,所以不管那边的值是如何,任何参与运算的表达式都会被执行求值,因此也就产生了你代码之中的结果了。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 你到家了吗
- 闲杂“细雨”
- 村里的故事|村里的故事 --赵大头
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- 四首关于旅行记忆的外文歌曲
- 事件代理
- 情节33.0
- 醒不来的梦
- 生命过客——第10章|生命过客——第10章 初为人母