这会创建NullPointerException,如果不是为什么不呢?

sas*_*ank 1 java nullpointerexception

我在下面的代码行

String name = null;
if (something)
    name = someString;
if (name != null && name.equals("XYZ"))
    doSomethingWith ("hello");
Run Code Online (Sandbox Code Playgroud)

如果"something"为false,上面的if条件会导致NullPointerException吗?如果不是为什么不呢?

pax*_*blo 9

不,它不会.&&Java中的运算符是短路的,因此,如果namenull,则name.equals()不会执行(因为false && anything仍然是false).

同样的,||顺便说一句:如果左侧的计算结果为true,右侧没有被选中.