黑马程序员技术交流社区

标题: if-else-if 和switch -case的异同? [打印本页]

作者: 嘴角上揚ぃ读不    时间: 2014-5-17 15:19
标题: if-else-if 和switch -case的异同?
本帖最后由 嘴角上揚ぃ读不 于 2014-5-17 16:37 编辑

if-else-if 和switch -case的异同?就是什么情况下两种都能用,或者什么情况下只能用if-else-if ,或者什么情况下只能用switch -case?


作者: 曲线    时间: 2014-5-17 16:00
if-else 一般用于范围的判断 条件范围广 写什么都可以 而且判断是由上至下 有顺序问题,但是if-else只是单纯地一个接一个比较,效率比较低.
switch 用作分支情况较多的判断,判断条件类型单一,只有一个入口,在分支执行完后(如果没有break跳出)不加判断的执行下去,
switch的效率一般比if-else高 ,switch只计算一次值   .
if...else 是每个条件都要计算一遍的.
switch的效率与分支数无关   
然而分支比较少的时候,if效率比switch高(因为switch有跳转表)   
分支比较多,那当然是switch
作者: 嘴角上揚ぃ读不    时间: 2014-5-17 16:38
曲线 发表于 2014-5-17 16:00
if-else 一般用于范围的判断 条件范围广 写什么都可以 而且判断是由上至下 有顺序问题,但是if-else只是单 ...

噢噢     ,    谢谢咯
作者: 天道酬勤_||淡腾    时间: 2014-5-18 09:13
switch...case与if...else的根本区别在于,switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch...case不用像if...else那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。所以从效率上来说由于if...else的遍历性,代码执行效率是不高的。
作者: 嘴角上揚ぃ读不    时间: 2014-5-18 10:11
天道酬勤_||淡腾 发表于 2014-5-18 09:13
switch...case与if...else的根本区别在于,switch...case会生成一个跳转表来指示实际的case分支的地址,而 ...

          :)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2