Java 这些if语句之间的区别是什么?

Java 这些if语句之间的区别是什么?,java,if-statement,Java,If Statement,这些条件语句之间有什么区别 if ((middleOfTabIndicator < index * tabIndicatorWidth)) { if (index - 1 != featuredTabIndex) { // Do something } } if((middleOfTabIndicator

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

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

if((middleOfTabIndicator

我所有的变量都是
int
。这些条件不一样吗?当我写第一个条件时,一切正常,但当我写第二个条件时,结果会改变。为什么会发生这种情况?

常见的是,示例中的两个IF语句都不清楚,可以使用适当的变量解释它们的含义或适当命名的方法将它们外部化

它们大多是不同的结构。第一种是使用嵌套的IF语句。第二个是预先计算嵌套的IF语句

第一个构造可以覆盖2个场景。 1)
middleOfTabIndicator
2)
当middleOfTabIndicator

虽然第二种结构可以涵盖单一场景:

middleOfTabIndicator < index * tabIndicatorWidth & ((index - 1) != featuredTabIndex)
middleOfTabIndicator
在某种程度上,构造1比构造2更具扩展性,覆盖更多的案例。但同时,如果采用以下方法,则可以不嵌套地按构造编号1:

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

现在,您有了与构造1相同的行为,没有嵌套。

常见的是,示例中的两个IF语句都不清楚,可以使用适当的变量解释它们的含义或适当命名的方法将它们外部化

它们大多是不同的结构。第一种是使用嵌套的IF语句。第二个是预先计算嵌套的IF语句

第一个构造可以覆盖2个场景。 1)
middleOfTabIndicator
2)
当middleOfTabIndicator

虽然第二种结构可以涵盖单一场景:

middleOfTabIndicator < index * tabIndicatorWidth & ((index - 1) != featuredTabIndex)
middleOfTabIndicator
在某种程度上,构造1比构造2更具扩展性,覆盖更多的案例。但同时,如果采用以下方法,则可以不嵌套地按构造编号1:

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

现在,您的行为与没有嵌套的构造1相同。

在第一个条件中,您有“嵌套的如果”,这意味着您的“外部的如果”先被检查,然后如果它为真,那么您的“内部的如果”(嵌套的如果)将被检查。
在第二个条件中,只有一个“如果”,但它包含两个条件,它们都应该为真,这样if body就可以运行。

在第一个条件中,你有“嵌套的if”,这意味着你的“外部if”先被选中,然后如果为真,那么你的“内部if”(嵌套的if)将被选中。
在第二个条件中,只有一个“if”,但它包含两个条件,它们都应为true,以便if body可以运行。

“结果更改”-您能否提供一组发生这种情况的输入值?如果这是您的整个代码,这两个块的作用完全相同。不过他们看起来不一样。差异的原因必须在您发布的代码之外。请回答您的问题,并发布演示您描述的行为的完整代码。“结果更改”的确切含义是什么?请更具体一点。@MTCoster谢谢。我的问题解决了。我正在为我的Android应用程序制作一个自定义视图。我的代码之间有很多联系。因此,我无法添加整个代码。谢谢大家。请不要在标题中添加
[solved]
。相反,您可以通过单击计票下的绿色复选标记来选择您认为最有用的答案。(这也会给你一些声誉)“结果改变”-你能提供一组发生这种情况的输入值吗?如果这是你的整个代码,这两个块的作用完全相同。不过他们看起来不一样。差异的原因必须在您发布的代码之外。请回答您的问题,并发布演示您描述的行为的完整代码。“结果更改”的确切含义是什么?请更具体一点。@MTCoster谢谢。我的问题解决了。我正在为我的Android应用程序制作一个自定义视图。我的代码之间有很多联系。因此,我无法添加整个代码。谢谢大家。请不要在标题中添加
[solved]
。相反,您可以通过单击计票下的绿色复选标记来选择您认为最有用的答案。(这也会给你一些声誉)Java对
&
操作符使用短路求值,因此在这两种情况下,只有当第一个条件求值为
true
时,才会对第二个条件求值Java对
&
操作符使用短路求值,因此,在这两种情况下,仅当第一个条件的计算结果为
true