Java是否检查"&&"(和)运算符中的所有参数,即使其中一个是假的?

pix*_*xel 13 java short-circuiting logical-operators and-operator

我有这样的代码:

if(object != null && object.field != null){
    object.field = "foo";
}
Run Code Online (Sandbox Code Playgroud)

假设该对象为null.

此代码是否导致nullPointerException或只是if语句不会被执行?

如果是这样,如何重构这段代码更优雅(如果可能的话)?

Mic*_*mlk 20

&&虽然不会短路&.

但是对于这样的简单问题,最好只尝试它(当你无法访问机器时,ideone可以提供帮助).

&& - http://ideone.com/LvV6w& - http://ideone.com/X5PdU

最后,确定的地方是JLS§15.23.不是最容易阅读的内容,相关部分说明: &&运算符类似于&(§15.22.2),但仅在其左侧操作数的值为真时才计算其右侧操作数.


Ale*_*ber 9

Java确实有短路评估,即您的代码应该没问题