当前位置:   article > 正文

switch 与 if else 的区别_switch if else

switch if else

作为同是条件判断的这两条语句,它们之间有什么区别呢?今天我们来探讨一下。

基本语句

if else的代码解构

//if语句,满足该条件时执行,不关心不满足的情况if(true){  do something;}
//if else语句,满足该条件时执行,对不满足的情况进行对应处理if(true){  do something;}else{  do other things;}
// 多if语句,依次执行每一条if语句,//满足条件时执行,不满足则进行下一条if的判断。if(case1){  语句一}else if(case2){  语句二}else if(case3){  语句三}

swich的代码解构:​​​​​​​

switch(choose){  case 1:    语句一    break;  case 2:    语句二    break;  case 3:    语句三    break;  default:    默认语句}

从语法结构上看,switch与多if语句比较相似,写代码过程中,很多人会偏向于使用if else,因为相对switch写起来方便,快捷。

switch与if else的执行效率

绝大部分情况下,switch的执行效率要高于if语句。

原因在于:switch语句在运行时,首先会生成一个“跳转表”来指示实际的case分支的地址,而这个“跳转表”的索引号与swtich中的case值是相等的,这样的话,switch就不用像if else那样,遍历所有的条件,直至找到正确条件,而仅仅只需要访问对应索引号的表项就可以到达定位分支的目的。

简单的说,switch会生成一个数据统计表,将case后面的值全部统计起来,匹配时先拿表中的数据进行比较,如果有则直接跳转到相应case语句;如果没有,则直接跳转到default语句。

那if else呢?

if else语句需要一条一条的去进行取值范围的判断,直到找到正确的选项位置,这样的话势必会浪费大量的时间。

所以,单从其运行的效率来看,if else 的时间复杂度为O(n),即最坏的情况下判断n次,switch的时间复杂度为O(1),switch语句要更胜一筹。

总结

简单地总结一下:

1.switch语句由于它独特的case值判断方式,使其执行效率更高,而if else语句呢,则由于判断机制,导致效率稍慢。

2.到底使用哪一个选择语句,和当前的代码环境有关,如果是范围取值,则使用if else语句更为快捷;如果是确定取值,则使用switch更是一个不错的选择。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/142176
推荐阅读
相关标签
  

闽ICP备14008679号