Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果Java已经被证明是错误的,它还会继续使用条件吗?_Java_Conditional Statements - Fatal编程技术网

如果Java已经被证明是错误的,它还会继续使用条件吗?

如果Java已经被证明是错误的,它还会继续使用条件吗?,java,conditional-statements,Java,Conditional Statements,假设条件如下所示: if (false && true) //Code boolean dividesToTwo (int operand1, int operand2) { if ((operand2 != 0) && operand1 / operand2 == 2) return true; return false; } 它是否会在达到真值之前脱离条件,因为假and&&永远不会

假设条件如下所示:

    if (false && true)
      //Code
    boolean dividesToTwo (int operand1, int operand2) {
      if ((operand2 != 0) && operand1 / operand2 == 2)
        return true;
      return false;
    }
它是否会在达到真值之前脱离条件,因为假and&&永远不会是真的

另外,如果您有这样的代码:

    if (false && true)
      //Code
    boolean dividesToTwo (int operand1, int operand2) {
      if ((operand2 != 0) && operand1 / operand2 == 2)
        return true;
      return false;
    }
它会成功地按预期工作,还是会因为被零除而产生错误?(如果第二个操作数为零)

是,如果计算了(false&&true),在看到false时,条件将从此处停止计算(即在达到true之前)

然而,如果它是一个OR(| |)操作,它必须在确定它是真是假之前检查第二部分

对于第二个问题,它将按预期运行。零的除法不会发生

  if ((operand2 != 0) && operand1 / operand2 == 2)
这意味着如果
2=0
则由于
和&
的行为,只会发生除法。如果前半部分为真,则只会执行后半部分。如果前半部分为
false
,则不会执行后半部分

其中,仅当第一个参数不足以确定表达式的值时,才执行或计算第二个参数:


关于问题的第一部分,请参见。这称为短路评估:

  • 当使用
    &&
    时,仅当第一部分为真时才计算第二部分
  • 当使用
    |
    时,仅当第一部分为false时,才计算第二部分
关于问题的第二部分:


是的,这将按预期工作如果
操作数2
为零,则计算将被取消,且不会发生零除

&&
是条件and运算符,根据规范要求具有短路语义。所以,是的,这是以前问过的。看看这个:你试过了吗?