这些if语句有什么区别?

时间:2019-02-09 21:19:06

标签: java if-statement

这些条件语句之间有什么区别?

if ((middleOfTabIndicator < index * tabIndicatorWidth)) {
    if (index - 1 != featuredTabIndex) {
        // Do something
    }
}

vs

if ((middleOfTabIndicator < index * tabIndicatorWidth) && ((index - 1) != featuredTabIndex)) {
    // Do something
}

我所有的变量都是int。这些条件不一样吗?当我编写第一个条件时,一切都很好,但是当我编写第二个条件时,结果将更改。为什么会这样?

2 个答案:

答案 0 :(得分:2)

常见的是,您的示例中的两个IF语句都不清晰,并且可以通过使用解释其含义的适当变量或适当命名的方法来对它们进行外部化。

它们大多是不同的构造。第一个是使用嵌套的IF语句。第二个是预先评估嵌套的IF语句。

第一个构造可以涵盖2个场景。 1)middleOfTabIndicator < index * tabIndicatorWidth && ((index - 1) != featuredTabIndex) 2)when middleOfTabIndicator < index * tabIndicatorWidth && ((index - 1) == featuredTabIndex)

虽然第二种构造可以只覆盖一个场景:

middleOfTabIndicator < index * tabIndicatorWidth & ((index - 1) != featuredTabIndex)

从某种意义上说,第一个结构比第二个结构更广泛,涉及更多的情况。但是同时,您可以按以下方式在没有嵌套IF的情况下表示构造编号1:

if ((middleOfTabIndicator < index * tabIndicatorWidth) && ((index - 1) != featuredTabIndex)) {
    // Do something
}
else if (middleOfTabIndicator < index * tabIndicatorWidth) && ((index - 1) == featuredTabIndex)) {
}

现在,您具有与编号1相同的行为,但没有嵌套。

答案 1 :(得分:1)

在第一个条件中,您具有“嵌套的条件”,这意味着首先检查“外部的条件”,然后如果它为true,则将检查您的“内部的条件”(嵌套的if)。 在第二种情况下,只有一个“ if”,但其中包含两个条件,并且两个条件都应为true,以便body可以运行。