何时在Java中使用switch语句

Dan*_*Dan 14 java if-statement switch-statement

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

但是,当有人应该使用开关而不是其他的声明时,是否有风格规则.

Joe*_*oey 16

嗯,在我看来,在switch许多情况下感觉比" if/ else if梯子"更"轻" .基本上,您的代码方式中没有大括号和括号的语法.话虽如此,switch继承了C的语法.这意味着break除非您引入新块,否则您只有一个变量范围.

但是,编译器能够switch在处理枚举时将语句优化到查找表中并对文字执行编译时检查.所以,我建议通常最好使用switchover if/ else ifif你正在处理数字或枚举类型.

  • FWIW,switch语句中的字符串在JDK7中 (2认同)

Arm*_*est 11

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

switch (i) {
  case 1:
    // do something
    break;
  case 2:
  case 4:
    // do something
    break;
  case 5:
    // do something
    break;
}
Run Code Online (Sandbox Code Playgroud)

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

if ( i == 1 ) {
  // do something
}
if ( (i == 2) || (i == 4) ) {
  // do something
}
if ( (i == 5 ) {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

您(或其他程序员)也可以更容易地分割出2个4个案例.


ber*_*ami 5

我对枚举使用switch语句,if else else if else语句更具可读性.但是,您应该尝试避免在OO设计中进行此类检查.