【发布时间】:2011-06-21 13:38:35
【问题描述】:
当参数为空时,下面的 sn-p 是否会抛出 NPE?
public void doSomething(String string) {
if (string.trim().equals("") || string==null) {
[...]
}
}
我在其他人的代码中发现了这一点(其他人应该比我更有经验)。由于我在处理这段代码时遇到了困难,我想问一下是否应该反转比较,或者 Java 编译器是否足够聪明,可以交换操作数。我无法直接控制这段代码,也不会因为许多 catch 块而引发 NPE。
谢谢
【问题讨论】:
-
见java.sun.com/docs/books/jls/third_edition/html/… -
evaluates its right-hand operand only if the value of its left-hand operand is false -
我们将它们(
&&和||)结合使用是什么?有执行顺序吗?还是还是从左到右的评价? -
你自己试试吧? 5行代码,你就知道答案了。
-
参数名为str,但变量名为string。这是正确的吗?
-
@walkingTarget:我刚刚在@Martijn Courteaux 更正了我的答案后更正了这个问题。