应执行以下两个 if 块的内容:
if( booleanFunction() || otherBooleanFunction() ) {...}
if( booleanFunction() | otherBooleanFunction() ) {...}
那么使用有什么区别|
或使用||
?
注意:我对此进行了研究并找到了自己的答案,我将其包含在下面。请随时纠正我或提出您自己的观点。肯定还有改进的空间!
两者有不同的用途。尽管在许多情况下(处理布尔值时)它们可能具有相同的效果,但重要的是要注意逻辑或是短路的,这意味着如果其第一个参数的计算结果为 true,则留下第二个参数未评估。不管怎样,按位运算符都会计算它的两个参数。
类似地,逻辑与是短路的,这意味着如果其第一个参数的计算结果为 false,则第二个参数将不被计算。同样,按位与不是。
您可以在这里看到它的实际效果:
int x = 0;
int y = 1;
System.out.println(x+y == 1 || y/x == 1);
System.out.println(x+y == 1 | y/x == 1);
第一个 print 语句运行良好并返回 true,因为第一个参数的计算结果为 true,因此计算停止。第二个打印语句错误,因为它不是短路,并且遇到了被零除的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)