我只是在调试一些代码并找到了一些表达式:
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/