Java 多个IF-else条件与逻辑OR操作之间的差异

Java 多个IF-else条件与逻辑OR操作之间的差异,java,conditional-statements,Java,Conditional Statements,从逻辑上讲,两者之间有什么区别吗 if (name.startsWith("a"){ return true; } else if (name.startsWith("b") { return true; } else if (name.startsWith("c") { return true; } 及 我更喜欢第二个,因为它对我来说很高雅。我想了解“有什么不同吗?”它们是一样的 第二个显然更容易阅读,可读性在编程中非常重要 我喜欢遵循的规则是,如果if-else语句的多个

从逻辑上讲,两者之间有什么区别吗

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

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

它们是一样的

第二个显然更容易阅读,可读性在编程中非常重要

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

它们是相同的

第二个显然更容易阅读,可读性在编程中非常重要


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

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

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

它们是等价的,但第二个更可取,因为它更简洁-如果不同的条件应以不同的方式处理,例如:

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

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

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

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


当然,这两段代码都不起作用,因为您忘记了右大括号。:)

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


当然,这两段代码都不起作用,因为您忘记了右大括号。:)

两者都会起作用

最后也是最好的。i、 e逻辑或

 if(name.startsWith("a") || name.startsWith("b"){
    etc...
}
因为在逻辑上|

在这种情况下,它只是

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


两个人都会做的

最后也是最好的。i、 e逻辑或

 if(name.startsWith("a") || name.startsWith("b"){
    etc...
}
因为在逻辑上|

在这种情况下,它只是

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

在这种情况下:没有

带有
|
&
的布尔表达式使用短路,这意味着如果
A
已计算为
true
,则
B
A | B
中被忽略。因此,第一种选择并不更有效

如果If子句的主体变大了,您绝对不想使用第一个版本:

if (name.startsWith("a"){
    // lots of code
} else if (name.startsWith("b") {
    // lost of the same code
}
代码重复是一种可怕的罪恶,常常是令人讨厌的错误的原因。

在这种情况下:不

带有
|
&
的布尔表达式使用短路,这意味着如果
A
已计算为
true
,则
B
A | B
中被忽略。因此,第一种选择并不更有效

如果If子句的主体变大了,您绝对不想使用第一个版本:

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

代码重复是一种可怕的罪恶,常常是令人讨厌的bug的原因。

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

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

为什么不
返回name.startsWith(“a”)|| name.startsWith(“b”)|| name.startsWith(“c”)?因为如果不是以a、b或c开头,您不一定要返回false。@martijno,在本例中您是对的。为什么不
返回name.startsWith(“a”)|| name.startsWith(“b”)| name.startsWith(“c”)?因为如果不是以a、b或c开头,您不一定要返回false。@martijno,您在本例中是对的。True。我要换衣服。。我的意图证明是真的。我要换衣服。。我的意图是证明