【问题标题】:Difference between multiple IF else condition and logical OR operation多个 IF else 条件和逻辑 OR 操作之间的区别
【发布时间】:2013-07-26 22:10:07
【问题描述】:

在逻辑上是否有区别

if (name.startsWith("a"){
   return true;
} else if (name.startsWith("b") {
   return true;
} else if (name.startsWith("c") {
   return true;
}

if(name.startsWith("a") || name.startsWith("b") || name.startsWith("c") ){
  return true;
}

我更喜欢第二个,因为它对我来说很优雅。我想了解“有什么不同吗?”

【问题讨论】:

  • 为什么不return name.startsWith("a") || name.startsWith("b") || name.startsWith("c");
  • 因为如果它不是以 a、b 或 c 开头的,你不一定要返回 false。
  • @martijno,在这个例子中你是对的。

标签: java conditional-statements


【解决方案1】:

它们是一样的。

第二个肯定更容易阅读,可读性在编程中非常重要。

我喜欢遵循的规则是,如果 if-else 语句的多个分支产生相同的行为,我会将它们组合起来。 (确保它们是完全相同的行为)

【讨论】:

    【解决方案2】:

    在这种情况下没有区别。它们是等价的。

    【讨论】:

      【解决方案3】:

      它们是等价的,但第二个更好,因为它更简洁 - 如果不同的条件应该以不同的方式处理,你会使用第一个,例如

      if(name.startsWith("a")) {
          System.out.println("first side effect");
          return true;
      } else if (name.startsWith("b")) {
          System.out.println("a different side effect");
          return true;
      }
      

      【讨论】:

        【解决方案4】:

        它们在逻辑上是相同的。第二个当然更优雅和简洁。

        当然,sn-p 代码都不起作用,因为您忘记了右括号。 :)

        【讨论】:

        • 是的。我会改变..我的意图是展示
        【解决方案5】:

        两者都会做。

        最后一个也是最好的一个。即逻辑或

         if(name.startsWith("a") || name.startsWith("b"){
            etc...
        }
        

        因为在逻辑||

        在这种情况下它只是short-circuiting.

        只有在第一个参数不足以确定表达式的值时才执行或评估第二个参数:

        【讨论】:

          【解决方案6】:

          在这种情况下:没有。

          带有||&& 的布尔表达式使用短路,这意味着如果A 已经评估为trueB 将在A || B 中被忽略。因此,第一种方案的效率并不高。

          如果 if 子句的主体变得更大,并且包含相同的代码,那么您绝对不想使用第一个版本:

          if (name.startsWith("a"){
              // lots of code
          } else if (name.startsWith("b") {
              // lost of the same code
          }
          

          代码重复是一种可怕的罪过,而且常常是令人讨厌的错误的原因。

          【讨论】:

            【解决方案7】:

            他们的工作目的相同,但第一个对新手来说更难理解。甚至计算机执行第一个比第二个需要更多的时间。但是在这种情况下没有时间问题:D。第一条语句将像这样执行:将检查字符是否与 a 匹配,如果是,则它将返回 true,否则它将遵循相同的步骤两次,其中在第二条语句中,如果条件将仅在一行代码中决定要做什么:)。享受

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-08-26
              • 1970-01-01
              • 2015-10-12
              • 1970-01-01
              • 2015-09-29
              • 2015-10-27
              • 2019-04-19
              • 1970-01-01
              相关资源
              最近更新 更多