我只是在调试一些代码并找到了一些表达式:

if (mObject != null && a || b )
{
    mObject.someMethod();
}

在 mObject.someMethod() 行中有一个 NullPointerException - 所以我的问题是:

表达式是如何计算的?
1. a && b || c == a && (b || c)

或者
2. a && b || c == (a && b) || c

如果 1. 是这种情况,我可能不得不查看一些多线程问题。

这可能是一个愚蠢的问题,我很确定以前有人问过这个问题,但我在这里找不到答案。感谢您提前回答。

最佳答案

!= 优先于 && || 优先于 ojit_code ( Source )

所以

if (mObject != null && a || b )

相当于
if (((mObject != null) && a) || b )

为避免异常,请使用括号:
if (mObject != null && (a || b) )

关于java - && 和 || 的逻辑评估在声明中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28191822/

10-10 19:42