如题 ,最高票答案拳拳到肉,翻译一下:
1 更干净的代码。带有大量 if / else if 的代码看起来非常混乱,并且难以维护。而 switch 结构要清晰得多;
2 性能。对于密集的 case 值,编译器会用调表,对于稀疏的 case 值,会用二分查找或者生成 if / else,所以最坏的情况是跟 if / else 一样,但通常会更快一些。尽管有些编译器也会类似地优化 if / else;
3 检测顺序不重要。为了加速 if / else 通常要把最有可能命中的放在最前面。而 switch / case 不需要考虑这些。
4 默认情况可以放在让人很地方。 if / else 的缺省处理必须放在最后一个 else 后面。在 switch 语句,default 可以放在任何一个地方,任何一个程序员觉得更适合的地方。
5 共用代码。如果你需要在几个 case 里面执行相同的代码,你只需要忽略 break,然后让执行流继续往下走,这是你无法在 if / else 中实现的。(有一个好的实践就是一个特殊的注释 /* FALLTHROUGHT */ 对于这样的 case,这样编译器就不会提示,否则可能会提示说忘了加 break)。