该篇文档为《简单工厂模式》的文章所引用的补充说明。
switch case用法详解
源文链接:http://c.biancheng.net/view/171.html
从功能上来说,switch 语句和 if 语句完全可以相互取代。但是从编程的角度,它们又各有千秋,所以至今为止也不能说谁可以完全取代谁,需要根据业务场景,选择最为契合的方式。
当嵌套的 if 比较少时(三个以内),用 if 编写程序会比较简洁。但是当选择的分支比较多时,嵌套的 if 语句层数就会很多,导致程序冗长,可读性下降。这时可以使用 switch 语句来处理多分支选择。所以 if 和 switch 可以说是分工明确的。在很多大型的项目中,多分支选择的情况经常会遇到,所以 switch 语句用得还是比较多的。
switch 语句的一般形式如下:
1 | switch (表达式) |
补充说明:
switch 后面括号内的”表达式”必须是整数类型。也就是说可以是 int 型变量、char 型变量,也可以直接是整数或字符常量,哪怕是负数都可以。但是绝对不可以是实数、float型变量、double型变量、小数常量通通不行,全部都是语法错误。
switch 下的 case 和 default 必须用一对大括号
{}
括起来。当 switch 后面括号内”表达式”的值与某个 case 后面的”常量表达式”的值相等时,就执行此 case 后面的语句。执行完一个 case 后面的语句后,流程控制转移到下一个 case 继续执行。如果你只想执行这一个 case 语句,不想执行其他 case,那么就需要在这个 case 语句后面加上 break,跳出 switch 语句。
注意:switch 是”选择”语句,不是”循环”语句。有人可能看到 break 就以为是循环语句,因为 break 一般给我们的印象都是跳出”循环”,但 break 还有一个用法,就是跳出 switch。
若所有的 case 中的常量表达式的值都没有与 switch 后面括号内”表达式”的值匹配上,就执行 default 后面的语句,default 就是”默认”的意思。如果 default 是最后一条语句的话,那么其后就可以不加 break,因为既然已经是最后一句了,则执行完后自然就推出 switch 了。
每个 case 后面”常量表达式”的值必须互不相同,否则就会出现互相矛盾的现象,而且这样写是语法错误的。
“case 常量表达式”知识起语句标号的作用,并不是在该处进行判断。在执行 switch 语句时,根据 switch 后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。
各个 case 和 default 的出现次序不影响执行结果。但从阅读的角度最好是按字母或数字的顺序写。
当然你也可以不要 default 语句,就跟 if…else 最后不要 else 语句一样。但最好是加上,后面可以什么都不写。这样可以避免别人误以为你忘了进行 default 处理,而且可以提醒别人 switch 到此结束了。
但是需要注意的是,default 后面可以什么都不写,但是后面的冒号千万不能省略,省略了就是语法错误。