Java逻辑运算符短路
哪一组短路,这到底意味着复杂的条件表达式短路了?
public static void main(String[] args) { int x, y, z;
x = 10;
y = 20;
z = 30;
// T T
// T F
// F T
// F F
//SET A
boolean a = (x < z) && (x == x);
boolean b = (x < z) && (x == z);
boolean c = (x == z) && (x < z);
boolean d = (x == z) && (x > z);
//SET B
boolean aa = (x < z) & (x == x);
boolean bb = (x < z) & (x == z);
boolean cc = (x == z) & (x < z);
boolean dd = (x == z) & (x > z);
}
回答:
在&&
与||
运营商“短路”,这意味着如果没有必要,他们不评价的右手边。
在&
与|
运营商,如逻辑运算符时,始终评估两侧。
每个操作员只有一种短路情况,它们是:
false && ...
-不必知道右侧是什么,结果必须是false
true || ...
-不必知道右侧是什么,结果必须是true
让我们在一个简单的示例中比较行为:
public boolean longerThan(String input, int length) { return input != null && input.length() > length;
}
public boolean longerThan(String input, int length) {
return input != null & input.length() > length;
}
第二个版本使用非短路运算符&
,并将抛出NullPointerExceptionif inputis null
,但第一个版本将false
无例外地返回;
以上是 Java逻辑运算符短路 的全部内容, 来源链接: utcz.com/qa/421467.html