当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
被测试了吗?或者在这两种情况下,在第一个条件之后,代码跳过第二个条件并在代码中继续?
提前致谢。
答案 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
。