if else与switch区别

1、if-else

只是单纯地一个接一个比较;if...else每一个条件都计算一遍 算法

2、switch

使用了Binary Tree算法;绝大部分状况下switch会快一点,除非是if-else的第一个条件就为true
spa

编译器编译switch与编译if...else...不一样。无论有多少case,都直接跳转,不需逐个比较查询;switch只计算一次值,而后都是test , jmp,
编译器

有不少else if的时候,用switch case比较清晰
it

switch使用查找表的方式决定了case的条件必须是一个连续的常量。而if-else则能够灵活的多。 编译

3、总结

当只有分支比较少的时候,if效率比switch高(由于switch有跳转表)   
分支比较多,那固然是switch
test

4、switch case语句

switch (表达式){
case 1 : 语句1
break;

case 2 : 语句2
break;

...
default : 语句n
break;
} 效率

从表达式值等于某个case语句后的值开始,它下方的全部语句都会一直运行,直到遇到一个break为止。随后,switch语句将结束,程序从switch结束大括号以后的第一个语句继续执行,并忽略其余case
假如任何一个case语句的值都不等于表达式的值,就运行可选标签default之下的语句。
假如表达式的值和任何一个case标签都不匹配,同时没有发现一个default标签,程序会跳过整个switch语句,从它的结束大括号以后的第一个语句继续执行。 程序

相关文章
相关标签/搜索