只是单纯地一个接一个比较;if...else每一个条件都计算一遍; 算法
使用了Binary Tree算法;绝大部分状况下switch会快一点,除非是if-else的第一个条件就为true
spa
编译器编译switch与编译if...else...不一样。无论有多少case,都直接跳转,不需逐个比较查询;switch只计算一次值,而后都是test , jmp,
编译器
有不少else if的时候,用switch case比较清晰
it
switch使用查找表的方式决定了case的条件必须是一个连续的常量。而if-else则能够灵活的多。 编译
当只有分支比较少的时候,if效率比switch高(由于switch有跳转表)
分支比较多,那固然是switch test
switch (表达式){
case 值1 : 语句1
break;
case 值2 : 语句2
break;
...
default : 语句n
break;
} 效率
从表达式值等于某个case语句后的值开始,它下方的全部语句都会一直运行,直到遇到一个break为止。随后,switch语句将结束,程序从switch结束大括号以后的第一个语句继续执行,并忽略其余case。
假如任何一个case语句的值都不等于表达式的值,就运行可选标签default之下的语句。
假如表达式的值和任何一个case标签都不匹配,同时没有发现一个default标签,程序会跳过整个switch语句,从它的结束大括号以后的第一个语句继续执行。 程序