浅谈你对switch的理解以及switch和if的应用场景

  平时一般用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更容易阅读

原文地址:https://www.cnblogs.com/goloving/p/12895446.html