OR比较的Java顺序

usr*_*ΛΩΝ 4 java nullpointerexception

当参数为null时,以下片段会抛出NPE吗?

public void doSomething(String string) {
    if (string.trim().equals("") || string==null) {
    [...]
    }
}
Run Code Online (Sandbox Code Playgroud)

我在其他人的代码中找到了这个(其他人应该比我更有经验).由于我一直面临着这段代码的困难,我想问一下是否应该反转比较,或者Java编译器是否足够聪明以交换操作数.我没有直接控制这个代码,也没有因为许多catch块而引发NPE.

谢谢

Asa*_*aph 16

是.的代码片断将抛出NullPointerExceptionstringnull.建议将其更改为以下内容:

public void doSomething(String string) {
    if (string==null || string.trim().equals("")) {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)