一、效率
switch和if-else相比,由于使用了Binary Tree算法,绝大部分情况下switch会快一点,除非是if-else的第一个条件就为true
编译器编译switch与编译if…else…不同。不管有多少case,都直接跳转,不需逐个比较查询
二、计算方式
if-else只是单纯地一个接一个比较,效率比较低;if…else是每个条件都要计算一遍的.
switch只计算一次值,然后都是test , jmp,
switch的效率与分支数无关
当只有分支比较少的时候,if效率比switch高(因为switch有跳转表)
分支比较多,那当然是switch
三、代码清晰度
有很多else if的时候,用switch case比较清晰
四、查找方式
相比于if-else结构,switch的效率绝对是要高很多的,但是switch使用查找表的方式决定了case的条件必须是一个连续的常量。而if-else则可以灵活的多。
五、switch case语句
switch (表达式){
case 值1 : 语句1
break;
case 值2 : 语句2
break;
…
default : 语句n
break;
}
|