Java Strange行为检查循环条件

时间:2016-01-06 18:16:51

标签: while-loop nullpointerexception conditional-statements

我有这个:

while(victim.getHealth() > 1 && !victim.getName().equals(this.getName())) {
    victim.hurt();
}

现在我注意到在特殊情况下,victim.getName()将返回null(这是想要的行为)。但是在这种情况下,我希望发生NullPointerException,因为我们基本上是为第二个条件调用null.equals(this.getName())。

然而,这并没有发生。如果我切换循环条件的顺序,例如

while(!victim.getName().equals(this.getName()) && victim.getHealth() > 1) {
    victim.hurt();
}

当getName()返回null时,将抛出NullPointerException。

另外:如果这是||条件而不是&&,在java中,一旦找到一个,程序将停止检查真实条件吗?

1 个答案:

答案 0 :(得分:0)

我没注意到在这种特殊情况下getName()== null victim.getHealth()总是低于1,所以java永远不会达到第二个条件。对不起,我现在需要休息一下。 :d