为什么我们通常使用“\”?

为什么我们通常使用“\”?

我只是想知道为什么我们通常使用逻辑或||在两个不按位或不按位的布尔人之间|虽然他们俩都工作得很好。


我是说,看看下面这些:


if(true  | true)  // pass

if(true  | false) // pass

if(false | true)  // pass

if(false | false) // no pass

if(true  || true)  // pass

if(true  || false) // pass

if(false || true)  // pass

if(false || false) // no pass

我们能用吗|而不是||?同事&和&&.


蛊毒传说
浏览 401回答 3
3回答

神不在的星期二

如果您使用||和&&表单,而不是|和&这些操作符的形式,Java不会费心单独计算右操作数.问题是你想不想短路评估-最你想要的时间。一个很好的方法来说明短路的好处是考虑下面的例子。Boolean b = true;if(b || foo.timeConsumingCall()){    //we entered without calling timeConsumingCall()}正如Jeremy和Peter提到的,短路的另一个好处是空引用检查:if(string != null && string.isEmpty()){     //we check for string being null before calling isEmpty()}更多信息

ABOUTYOU

| 不做布尔表达式中的短路计算。||将停止计算第一个操作数是否为真,但是|不会的。此外,|可用于对字节/短/int/长值执行按位-OR操作。||不能。

MM们

因此,为了在其他答案的基础上举一个例子,短路在以下防御检查中至关重要:if (foo == null || foo.isClosed()) {     return;}if (bar != null && bar.isBlue()) {     foo.doSomething();}使用|和&相反,可能会导致NullPointerException被扔在这里。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java