多个IF else条件和逻辑OR运算之间的差异

时间:2013-07-26 14:58:44

标签: java conditional-statements

之间是否存在逻辑上的差异
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;
}

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

7 个答案:

答案 0 :(得分:7)

他们是一样的。

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

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

答案 1 :(得分:5)

在这种情况下:不。

||&&的布尔表达式使用短路,这意味着如果B A || BA被忽略已经评估为true。因此,第一种选择效率并不高。

如果if子句的主体变大,你绝对不想要使用第一个版本:

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

代码重复是一个可怕的罪恶,通常是导致烦人的错误的原因。

答案 2 :(得分:2)

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

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;
}

答案 3 :(得分:2)

两者都会做的。

最后也是最好的一个。即 LOGICAL OR

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

因为在逻辑||

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

  

其中第二个参数仅在第一个参数不足以确定表达式的值时执行或计算:

答案 4 :(得分:1)

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

当然,两段代码都不会起作用,因为你忘了关闭括号。 :)

答案 5 :(得分:1)

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

答案 6 :(得分:0)

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