下面来详细描述switch与ifelse的区别。
switch...case与if...else的根本区别在于,switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch...case不用像if...else那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。
具体地说,switch...case会生成一份大小(表项数)为最大case常量+1的跳表,程序首先判断switch变量是否大于最大case
常量,若大于,则跳到default分支处理;否则取得索引号为switch变量大小的跳表项的地址(即跳表的起始地址+表项大小*索引号),程序接着跳到此地址执行,到此完成了分支的跳转。

故,当分支较多时,当时用switch的效率是很高的。因为switch是随机访问的,就是确定了选择值之后直接跳转到那个特定的分支,但是if。。else是遍历所以得可能值,知道找到符合条件的分支。switch和if-else相比,由于使用了Binary Tree算法,绝大部分情况下switch会快一点。

以下有个比较详细的介绍,链接:

http://www.l99.com/151931/blog/view/77303

最新文章

  1. SQL server 查询某个表在哪些存储过程(SP)中使用到
  2. Java for LeetCode 207 Course Schedule【Medium】
  3. Android ActionBar Home按钮返回事件处理的两种方式
  4. 不经意间网易开源镜像去掉了FreeBSD的镜像
  5. Setting up your App domain for SharePoint 2013
  6. make makefile
  7. 2014.9.25DOM元素操作
  8. 读改善c#代码157个建议:建议10~12
  9. 【iOS开展-94】xcode6如何使用GIT以及如何添加太老项目GIT特征?
  10. 不要怂,就是GAN (生成式对抗网络) (四):训练和测试 GAN
  11. BZOJ 3391: [Usaco2004 Dec]Tree Cutting网络破坏(搜索)
  12. android 集成微博常见问题
  13. 洛谷 P4168 [Violet] 蒲公英
  14. JS中的闭包(转自他处)
  15. 20145212 罗天晨 《网络对抗》Exp3 Advanced 恶意代码伪装技术实践
  16. vue-13-插件
  17. 学习BOS物流项目第九天
  18. 【bug】VUE:Cannot read property '_withTask' of undefined
  19. Xamarin.Forms第三方XAML预览工具-LiveXAML简单体验
  20. 【xsy1378】 水题7号 贪心

热门文章

  1. TCP三次握手
  2. error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
  3. github for windows回滚到某一个版本,
  4. hbase centOS生产环境配置笔记 (1 NameNode, 1 ResourceManager, 3 DataNode)
  5. WPFの布局中Panel的选用
  6. WPF调用office2010的ppt出错
  7. 第三个 android控件
  8. Java多个数字求和输出
  9. BZOJ 2584: [Wc2012]memory(扫描线+线段树)
  10. 禁止在 .NET Framework 中执行用户代码。启用 "clr enabled" 配置选项