if else是一条比较指令,需要遍历条件分支直到命中条件 而swtich是一张地址表,而只需访问对应索引号的表项就能定位分支,所以switch有点以空间换时间的意思。 用优点来描述一下就明白了: switch优点 当分支较多时,用switch的效率是很高的。因为switch是随机访问的,就是确定了选择值之后直接跳转到那个特定的分支,但是if else是遍历所以得可能值,知道找到符合条件的分支。如此看来,switch的效率确实比if else要高的多。 但是case常量分布范围很大但实际有效值又比较少的情况,switch的空间利用率将变得很低。 if优点 switch只能处理常量的情况,对非常量的情况是无能为力的。像a > 1 && a < 100,这种表达式是无法使用switch的,只能用if else。所以if else能应用于更多的场合。
|