何时在 Java 中使用开关语句

2022-09-02 23:12:04

我很欣赏 switch 语句可以完成的任何事情,都可以通过 if else 语句来完成。

但是,对于何时应该使用开关而不是if else语句,是否有样式规则。


答案 1

好吧,在我看来,在许多情况下感觉比/梯子“更轻”。基本上,你的代码中没有那么多带有大括号和括号的语法。话虽如此,继承了C的语法。这意味着您只有一个变量范围,除非您引入新块。switchifelse ifswitchbreak

尽管如此,编译器仍然能够将语句优化到查找表中,并在处理枚举时对文本执行编译时检查。因此,我建议,如果您正在处理数字或枚举类型,通常最好使用over /。switchswitchifelse if


答案 2

在清晰度方面,Switch有一个优势:

switch (i) {
  case 1:
    // do something
    break;
  case 2:
  case 4:
    // do something
    break;
  case 5:
    // do something
    break;
}

如果 2 和 4 的代码相同,则可能比以下代码更清晰:

if ( i == 1 ) {
  // do something
}
if ( (i == 2) || (i == 4) ) {
  // do something
}
if ( (i == 5 ) {
  // do something
}

对于您(或其他程序员)来说,拆分2和4个案例也更容易。