Java如果具有多个语句的块

时间:2015-10-10 19:11:58

标签: java if-statement

我对 Java 中的IF子句有疑问。 我有和表达:

if ((someObject != null & connectedToTheInternet) || operate) {
    // some action
}

我的逻辑是正确的:如果someObject != null等于 true connectedToTheInternet等于 false ,那么我们(someObject != null & connectedToTheInternet)等于 false 然后我们有以下块:

if (false || operate) {
   // some action
}

如果operate等于 true ,那么// some action会被触发吗?

3 个答案:

答案 0 :(得分:2)

只是第一个注意事项:逻辑AND运算符是"&&"而不只是"&" (按位AND)。

以下,你的答案是肯定的...... JVM会根据你的想法运行条件。

顺便说一句,我建议你阅读这些操作符短路的内容:如果你正在学习它会很有趣。

例如,如果您有if (a && (b || c)a==false,则JVM不会评估bc条件,因为false && ...将始终为false

if (a || b || c && d)的情况下也是如此:如果a==true,则JVM将忽略其他部分并将其视为真,因为true || ....将始终为真。

答案 1 :(得分:2)

是。 if-clauses从左到右进行评估。如果没有使用括号,&&优先,更高的优先级有!(不) - 类似于数学中的乘法(AND),加法(OR)和负数( - )(例如&# 34; A&&(B || C)!= A&& B || C ==(A&& B)|| C") - 如果你是的话,我建议使用括号不确定。这样就可以将!= null检查和调用组合到同一if语句中(例如if (object!=null && object.dosomething()))。

顺便说一下。 &&&short-circuit)之间存在差异,当使用&时,即使第一个条件已经false,第二个条件也会得到评估。当使用&&时,如果第一个条件为false,则Java不会检查第二个条件,因为整个项不再为真 - 这仅在第二个条件不是布尔值时才重要变量但是一个方法(被调用与否 - > side effects;这个"跳过"被称为短路。 |||的情况相同,如果第一个运算符已经true,则可能无法评估第二个运算符(如果是||)。

通常只使用||&&

为了完整性:&也是Java中的按位AND运算符。

答案 2 :(得分:0)

if (false || operate) {  
   // some action
}

如果操作为true,则阻止执行。