【问题标题】:Diffrence between multiple && and nested if [duplicate]多个 && 和嵌套 if [重复] 之间的差异
【发布时间】:2014-05-19 07:04:30
【问题描述】:

请我试图找出两者之间的区别。 下面是例子

对于多个 && 运算符:

if(a>b && b>c){
    // do some thing
}

用于嵌套 if 条件

if(a>b){
    if(b>c){
        //do some thing`enter code here`
    }
}

哪个快,哪个应该使用。 两者有什么区别。 我想知道复杂性增加时的性能。

【问题讨论】:

  • @JRowan 见Oracle.com 如果您组合多个 &&,则仅在第一个为真时评估第二个,如果第二个为真,则评估第三个,依此类推.. .

标签: java php android performance


【解决方案1】:

请注意,对于逻辑 AND 版本 (&&),ANSI C 不需要特定的操作顺序。这意味着如果第二个测试取决于第一个测试的结果,那么两者可能会产生不同的结果。

将每个测试括在额外的括号中也是明智的,以避免运算符优先级问题。

【讨论】:

    【解决方案2】:

    我认为第一种是标准方法。

     if(a>b && b>c)
    {
    // do some thing
    }
    

    它减少了行数。这意味着它遵循不要重复自己(DRY)原则。在java中执行是逐行

    【讨论】:

      【解决方案3】:

      它们实际上是相同的。无论哪种方式,您都必须测试至少一个条件。在这两个示例中,如果a 小于b,则评估将结束,程序将继续执行下一位代码。此外,现代 Java 编译器实际上会将这两个示例编译成相同的字节码。因此,要回答您的问题,两者都可以,并且其中一个不会显示出比另一个更好的性能。我个人使用第一个示例,因为它更紧凑,我觉得它更易于阅读。

      【讨论】:

        【解决方案4】:

        区别主要在于可读性和维护性。

        2 个逻辑条件的连接通常意味着它们之间存在语义关系。

        要考虑的另一件事是范围。嵌套的 if 在这方面为您提供了额外的灵活性。

        【讨论】:

          【解决方案5】:

          这两个是等价的:

          if (condition1) block1 
          else if (condition2) block2
          
          if (condition1) block1 
          else
          {
             if (condition2) block2
          }
          

          我想它们也编译成同一个程序集,所以应该没有区别。

          【讨论】:

            【解决方案6】:

            只有很小的性能差异,选择多个 && 运算符使代码简单易懂

            【讨论】:

              猜你喜欢
              • 2013-06-01
              • 2011-06-04
              • 1970-01-01
              • 2019-10-19
              • 2021-02-23
              • 2012-11-21
              • 2012-12-16
              • 1970-01-01
              • 2019-10-01
              相关资源
              最近更新 更多