黑马程序员技术交流社区

标题: switch 为什么比 if else效率高 [打印本页]

作者: zczcyc0201    时间: 2012-10-14 19:22
标题: switch 为什么比 if else效率高
(1)尽管switch语句与if语句一样,是条件选中语句,但实际上switch语句只能取代if语句的一部分功能。switch语句只能做等式比较,即用switch之后括号内的表达式结果与各case分支后的常量做相等比较,如相等则执行case后的语句,否则跳过;而if语句可做各种关系比较。(2)switch之后括号内的表达式只能是整型(byte、short、char和int)、枚举型或字符型表达式,不能是长整型或其他任何类型。switch就像是多彩的盒子,你一眼就可以分辩出来,但是if相当于在盒子中加了个外包装,你得一个一个的看,才知道是哪个。

作者: 马磊    时间: 2012-10-14 20:33
Java 7里面 switch后括号内已经可以存放字符串了,用起来更方便,不过一般开发中使用switch的不多
作者: 马磊    时间: 2012-10-14 20:33
本帖最后由 马磊 于 2012-10-14 20:34 编辑

为什么总发两遍?网速太不给力了。。。。。
作者: qhasilver    时间: 2012-10-14 21:45
switch相当于直接获取一个索引,到达指定的代码块去执行,if需要逐个判断,效率要较低,不过更灵活些。
作者: 李琼    时间: 2012-10-14 21:48
因为switch的条件简单,编译器会为它做二分法优化(或跳转表).平均性能要高一点.而if   else所比较的条件会远远比switch的复杂,编译器通常不会做过多的优化.当然你可以手工优化....
一般情况下,是差不多的.




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