黑马程序员技术交流社区

标题: 选择语句的效率问题 [打印本页]

作者: 佘天宇    时间: 2012-10-3 10:40
标题: 选择语句的效率问题
本帖最后由 佘天宇 于 2012-10-4 09:12 编辑

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

作者: 李建强    时间: 2012-10-3 12:09
if...else是一个接着一个的比较。
switch...case是生成一个表,

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

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


作者: 黄小贝    时间: 2012-10-3 15:39
本帖最后由 黄小贝 于 2012-10-3 15:44 编辑

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

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

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



重构-改善既有代码的设计.chm (1.52 MB, 下载次数: 161)
作者: chjxs    时间: 2012-10-3 15:50
这个怎么说呢。具体看情况吧。都有好的地方

就像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++;
......
}
作者: jav2011690    时间: 2012-10-3 16:40
chjxs 发表于 2012-10-3 15:50
这个怎么说呢。具体看情况吧。都有好的地方

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

恩,是这样




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