平时一般用if,switch用的很少,有必要简单总结下两者的区别:
一、对switch的理解
1、switch的括号里面放的是一个变量
2、case相对应的值是关于这个变量的一个值
3、switch里面的这个变量和case里面这个变量不会进行隐式类型的一个转换,而是进行了恒等比较。所以一定要注意这个变量和这个case里面的值是不是一个类型。
4、关于switch里面的case会有一个穿透效果,这个效果有的时候会给我们带来好处,有的时候会给我们带来坏处,如果不需要这种穿透效果的时候,需要加break
5、swicth里面如果这个变量没有匹配到case里面这个值,那么就需要返回一个信息。所以在case的末尾一定要加上一个default,这样既给用户的体验比较完美,另一方面对代码的今后维护也有很大的帮助
6、比较的值都是固定值
二、switch工作原理
1、首先设置表达式 n(通常是一个变量)
2、随后表达式的值会与结构中的每个 case 的值做比较,如果有就执行对应的语句体,看到break就结束。
3、如果没有匹配,就执行default的语句体。
三、注意事项
1、case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的值
2、default可以省略吗?可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
3、break可以省略吗?可以省略,但是结果可能不是我们想要的,会出现一个现象:case穿透,最终我们建议不要省略
case穿透和break有关,只有当遇到break时才会终止,不然会继续执行后面case中的代码块
4、default一定要在最后吗?不是,可以在任意位置。但是建议在最后。
default的位置不会影响执行结果,不管你编写的代码中default放在那里,这里的条件判断都是先按顺序比较其他非default值,当这些条件都不满足的时候,才跳转到default的相应代码处执行。
5、switch语句的结束条件:
(1)遇到break就结束了;
(2)执行到末尾就结束了。
四、switch和if的应用场景
if :
1、具体的值进行判断
2、区间的判断
3、对运算的结果是boolean类型表达式进行判断 true false
switch:
1、对具体的值进行判断
2、值的个数是固定的。对于几个固定的值判断,建议使用switch 语句。因为switch 语句会将具体的答案都加载进内存,效率相对高一点。
基于代码的可读性:如果条件较少时,if-else容易阅读,而条件较多时,switch更容易阅读