if语句何时完成检查其条件?

时间:2016-05-08 21:35:09

标签: java if-statement conditional

当if语句包含两个(或更多)条件,并且第一个条件失败时,if语句是检查第二个条件还是继续代码?

以下是两个例子:

int x = 1, y = 2;
if(x == 0 && y == 2)
    System.out.println("Nothing");
if(x == 1 || y == 0)
    System.out.println("Something");

在第一个if语句中,条件应该返回false,但是y == 2是否经过测试?在第二个例子中,条件应该返回true,但是y == 0被测试了吗?或者在这两种情况下,在第一个条件之后,代码跳过第二个条件并在代码中继续?

提前致谢。

3 个答案:

答案 0 :(得分:4)

&&||短路运算符,这意味着如果没有必要,则不会评估右侧比较。

所以,我们有以下内容:

  • 使用&&时,如果左侧比较为false,则不评估右侧比较。

  • 使用||时,如果左侧比较为true,则不评估右侧比较。

但是,当使用&|作为逻辑运算符时,将始终对双方进行评估。

答案 1 :(得分:0)

就像 @Cassio 所述,第二个操作数将不会被评估。

短路评估在您需要检查对象存在并验证其属性时非常方便。

if (X !=null && X.length !=null) ...

答案 2 :(得分:0)

<!DOCTYPE html> <html lang="pt-PT"> <head> <meta charset="UTF-8"> <title>High School</title> </head> <body> <div id="school"></div> </body> </html>运算符中,两个比较必须返回&&才能传递true条件,因此,如果第一个条件为if,结果将为false,无论第二个结果是。

false运算符中,如果任何比较为||,则true结果将为if,无论第二个结果如何。

所以,

在AND运算符中,如果第一个比较为true,它将测试第二个比较,并且需要测试第二个比较以确定条件结果。

在OR运算符中,如果第一个比较为true,它将测试第二个比较,并且需要测试第二个比较,因为它可能会改变条件结果false