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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 佘天宇 中级黑马   /  2012-10-3 10:40  /  1842 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 佘天宇 于 2012-10-4 09:12 编辑

在银行调度系统中张老师讲到,说:
if else 和switch 的效率问题, 说用switch好,但是并没有说明原因
哪位知道的话告诉一下 ,谢谢

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
if...else是一个接着一个的比较。
switch...case是生成一个表,

表里存的是case分支的索引,索引与case值相同。
通过所有直接到达分支。不用像if...else那样挨个挨个判断。

多数情况下switch效率高,除非判断只有少量分支,比如if只判断一次。

回复 使用道具 举报
本帖最后由 黄小贝 于 2012-10-3 15:44 编辑

额,效率是switch高不错,但是尽量少用,现在说这个可能你不懂,但是等以后你做一些比较大的项目的时候你会发现很多时候不宜用switch把代码写死~~

下面摘自《重构》一书~ 当你发现你需要用switch语句的时候,你需要考虑一下重构了~~

里面蓝色字体是重构的一些常用方法,如果不明白可以去书中查



重构-改善既有代码的设计.chm (1.52 MB, 下载次数: 166)

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
这个怎么说呢。具体看情况吧。都有好的地方

就像for each,和普通的for语句一样。没有非得用哪个。

2楼说了点,还有就是case里面要有break,遇到break才退出。
switch(1){
case 1:  i++;
case 2:  i++;
case 3:  i++; break;//下面的4不执行,1,2,3都会执行
case 4:  i++;
......
}

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
chjxs 发表于 2012-10-3 15:50
这个怎么说呢。具体看情况吧。都有好的地方

就像for each,和普通的for语句一样。没有非得用哪个。

恩,是这样
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马