赞
踩
作为同是条件判断的这两条语句,它们之间有什么区别呢?今天我们来探讨一下。
基本语句
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更是一个不错的选择。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。