A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 嘴角上揚ぃ读不 中级黑马   /  2014-5-17 15:19  /  1614 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 嘴角上揚ぃ读不 于 2014-5-17 16:37 编辑

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

4 个回复

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

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

          :)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马