为什么在短IF中发生NullPointerException

Jok*_*kii 11 java nullpointerexception

我编写了导致NullPointerException的简短Java代码.有没有人对此有解释?码:

int val = 2;
Boolean result = (val == 0) ? false : ((val == 1) ? true : null);
Run Code Online (Sandbox Code Playgroud)

以下(简化版)代码将导致NullPointerException:

Object result = (false) ? false : (false ? true : null);
Run Code Online (Sandbox Code Playgroud)

但是这个:

int val = 2;
Boolean result = (val == 0) ? Boolean.FALSE : ((val == 1) ? true : null);
Run Code Online (Sandbox Code Playgroud)

还有这个:

Object result = (false) ? Boolean.FALSE : (false ? true : null);
Run Code Online (Sandbox Code Playgroud)

或这个:

Object result = (false) ? (Boolean)false : (false ? true: null);
Run Code Online (Sandbox Code Playgroud)

不?

noM*_*MAD -1

在java中,boolean只允许trueand,false但是布尔值允许true falseandNULL