程序中的短路算法现象
一、逻辑与(&&)中的短路。
逻辑与的运算符为&&, 其运算规则为,对于expr1 && expr2,只有当expr1和expr2同时为真(1)时,结果才为真(1);
可以得到,如果expr1为假,那么无论expr2值是什么,结果都是假。
这种情况下,expr2的值就不重要了,于是当expr1为0(假)时,后续的expr2不会加入计算,而是被忽略,这就是逻辑与的短路现象。
代码如下(示例):
public class 短路算法 { public static void main(String[] args) { //========逻辑与 短路算法======== int i = 1,j = 1; boolean c = ++j > 2 && i++ > 0; // 2>2 && 1>0 flase 即:flase && true ⇒ flase System.out.println("c="+ c); // c = flase; } }
二、逻辑或(||)中的短路。
逻辑或的运算符为||, 其运算规则为,对于
expr1 || expr2,只有当expr1和expr2同时为假(0)时,结果才为假(0)。
可以得到,如果expr1为真,那么无论expr2值是什么,结果都是真。
这种情况下,expr2的值就不重要了,于是当expr1为1(真)时,后续的expr2不会加入计算,而是被忽略,这就是逻辑或的短路现象。
代码如下(示例):
public class 短路算法 { public static void main(String[] args) { //========逻辑或 短路算法======== int i = 1,j = 1; boolean c = ++j > 2 || i++ > 0; // 2>2 || 1>0 即:flase || true ⇒ true System.out.println("c="+ c); // c = true; } }
总结
综上所述,短路现象的出现,其实是和各自的运算规则相关的,如果第一个运算符已经可以确定运算结果,那么第二个运算符就会被忽略,这样的规则设置,可以提高程序运行的效率。
#Java##算法#