为了账号安全,请及时绑定邮箱和手机立即绑定

Java逻辑运算符短路

Java逻辑运算符短路

喵喔喔 2019-06-06 15:30:12
哪个集合是短路的,它到底意味着复杂的条件表达式是短路的呢?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);}
查看完整描述

3 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

这个&&||操作人员“短路”,意思是如果没有必要,他们不会对右手边进行评估。

这个&|运算符,当用作逻辑运算符时,总是对双方进行评估。

每个操作员只有一种短路情况,它们是:

  • 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;}

第二个版本使用非短路操作符。&会抛出一个NullPointerException如果inputnull,但是第一个版本将返回false无一例外;


查看完整回答
反对 回复 2019-06-06
?
冉冉说

TA贡献1877条经验 获得超1个赞

集合A使用短路布尔运算符.


在布尔运算符的上下文中,“短路”的意思是,对于一组布尔函数b1、b2、.、bn,一旦第一个布尔值为真(X)或false(&),短路版本就会停止计算。


例如:


// 2 == 2 will never get evaluated because it is already clear from evaluating

// 1 != 1 that the result will be false.

(1 != 1) && (2 == 2)


// 2 != 2 will never get evaluated because it is already clear from evaluating

// 1 == 1 that the result will be true.

(1 == 1) || (2 != 2)


查看完整回答
反对 回复 2019-06-06
?
米脂

TA贡献1836条经验 获得超3个赞

短路意味着如果第一个操作符决定最终结果,则不会检查第二个操作符。

例如:表达式是:true\x>false

万一发生了,我们所需要的就是一边成为真实的人。因此,如果左手边是真的,检查右侧就没有意义了,因此根本不会检查。

同样,假与真

万一-,我们需要双方成为真实的人。所以如果左手边是假的,检查右边没有意义,答案必须是假的。因此,这一点根本不会被检查。


查看完整回答
反对 回复 2019-06-06
  • 3 回答
  • 0 关注
  • 695 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信