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


喵喔喔
浏览 723回答 3
3回答

千万里不及你

这个&&和||操作人员“短路”,意思是如果没有必要,他们不会对右手边进行评估。这个&和|运算符,当用作逻辑运算符时,总是对双方进行评估。每个操作员只有一种短路情况,它们是:false && ...-不需要知道右手是什么,结果必须是falsetrue || ...-不需要知道右手是什么,结果必须是true让我们在一个简单的例子中比较一下这种行为:public&nbsp;boolean&nbsp;longerThan(String&nbsp;input,&nbsp;int&nbsp;length)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;input&nbsp;!=&nbsp;null&nbsp;&&&nbsp;input.length()&nbsp;>&nbsp;length;}public&nbsp;boolean&nbsp;longerThan(String&nbsp;input,&nbsp;int&nbsp;length)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;input&nbsp;!=&nbsp;null&nbsp;&&nbsp;input.length()&nbsp;>&nbsp;length;}第二个版本使用非短路操作符。&会抛出一个NullPointerException如果input是null,但是第一个版本将返回false无一例外;

冉冉说

集合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)

米脂

短路意味着如果第一个操作符决定最终结果,则不会检查第二个操作符。例如:表达式是:true\x>false万一发生了,我们所需要的就是一边成为真实的人。因此,如果左手边是真的,检查右侧就没有意义了,因此根本不会检查。同样,假与真万一-,我们需要双方成为真实的人。所以如果左手边是假的,检查右边没有意义,答案必须是假的。因此,这一点根本不会被检查。
打开App,查看更多内容
随时随地看视频慕课网APP