【问题标题】:How many conditions can an if check forif可以检查多少个条件
【发布时间】:2015-04-26 07:42:43
【问题描述】:

if 可以检查多少个条件? 例如,

if(a==1 && b==1 && c==1 && ... && n==1)

我知道这可能可以简单地通过嵌套 if 来解决,然后嵌套多少就不是问题了。但坦率地说,我很好奇,似乎无法找到需要多少。

另外,反正我有你的注意,效率上是不是有区别

if(a==1 && b ==1)

if(a==1)
    if(b==1)

【问题讨论】:

  • 每个问题只问一个问题。
  • 从技术上讲,if 中只评估了 1 个条件,实际上发生的是 1 个条件被评估,其结果被下一个评估,依此类推......
  • 1) 没有限制。 2) 两者都是一样的
  • 布尔表达式的长度没有定义的限制;您可能会在某个时候遇到内存问题。关于第二个问题,请参阅:stackoverflow.com/questions/5259938/…
  • @Poldie 我很抱歉,但基本上我想看看是否有任何相对于任一选项的优点,因为它通常是嵌套的 if,而不是条件字符串。

标签: java if-statement conditional-statements


【解决方案1】:

if 中的条件语句的数量没有限制。 此外,这两个块中的任何一个都没有性能改进。

两者之间最大的区别是您无法控制第一个条件失败的条件。

例子:

if(a==1 && b==1) {
    //do something
} else {
    //no way to tell which one failed without checking again!
}

另一个:

if(a==1) {
    if(b==1) {
        //do something
    } else {
        // 'b' failed (meaning: b is not equal to 1)
    }
} else {
    // 'a' failed
}

【讨论】:

    【解决方案2】:

    据我所知,没有明确的限制。实际限制是当可读性成为问题时。

    实际的代码限制可能是由于 Java 方法只能包含大约 64 KiB 的字节码。

    最后两个代码块做同样的事情(假设它们后面只有一个代码块或语句)。只有在涉及else 时,它们才会有所不同。

    【讨论】:

      【解决方案3】:

      我不确定if 子句中语句的数量,但两种语法之间的性能是相同的。无论您使用什么语法,编译器都会生成相同的字节码。

      【讨论】:

      • 如果您在您的帖子中证明两段代码的生成字节码也是相同的,那就更好了。
      【解决方案4】:

      java if 语句可以只测试一个条件:

      if ( 布尔表达式 ) 语句 [ else 声明 ]

      您示例中的a==1 && b==1 && c==1 && ... && n==1一个 布尔表达式,正如其他人已经告诉您的那样,布尔表达式的复杂程度没有硬性限制。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-22
        • 2014-05-08
        • 2012-12-13
        相关资源
        最近更新 更多