黑马程序员技术交流社区

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

作者: 刘郑瑞    时间: 2013-1-21 10:28
标题: switch为什么比if...else的效率高
switch为什么比if...else的效率高?请赐教,详细点。
作者: 黄锦成    时间: 2013-1-21 11:39
这个似乎涉及到底层了。好像是汇编那方面了
作者: 杨浩    时间: 2013-1-21 13:31
因为switch的参数只能是int(其他6个基本数据类型的值,或自动提升安全转换,或强制转换,都可以)
而if的条件可以很复杂,这样,其实编译器就顺便给switch做了优化,为了提高效率嘛!而if的条件复杂,编译器就不管咯。
作者: VOIDMAIN    时间: 2013-1-21 13:44
请问楼主如何知道switch比if...else的效率高的?
作者: 张世钦    时间: 2013-1-21 14:38
我的理解,switch是选择题,
if...else是判断题,

switch是选择,给你个值给我找出这个值(选项的所有内容直接进内存比较),直接干活.
if...else是先判断,再干活,读到哪一句,那一句的内容进内存,进行逻辑判断.

也不知道对不对

还有一点,好想switch的参数也能char,记得老毕视频上说了
作者: 高浩    时间: 2013-1-21 22:19
switch直接根据输标识去找那种情况,而if else则是一个一个去验证效率当然不高了
作者: 黑马张旭    时间: 2013-1-22 21:59
switch的case条件都是编译期整数常量,编译器可以做到表格跳转查询,查找速度快,
缺点是:case条件都是编译期整数常量

if/else是一个挨一个的查询,速度较慢,
优点是:不限比较类型和内容,你可以使用double,float,string或是自定义类型,比较双方不必是编译期常量。
作者: 焦健    时间: 2013-1-23 01:07
case时编译时期的常量这种说法我赞同,所以效率略高,switch的功能在不断的完善1.5以后可以判断枚举,1.7以后甚至可以判断字符串,功能还是很强大的!!




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