黑马程序员技术交流社区
标题:
关于【if语句】和【switch语句】的问题
[打印本页]
作者:
范晓冲
时间:
2014-1-1 16:11
标题:
关于【if语句】和【switch语句】的问题
【if语句】和【switch语句】有何区别?何时使用【if语句】?何时使用【switch语句】?
作者:
776699
时间:
2014-1-1 17:14
一、效率
switch和if-else相比,由于使用了Binary Tree算法,绝大部分情况下switch会快一点,除非是if-else的第一个条件就为true
编译器编译switch与编译if…else…不同。不管有多少case,都直接跳转,不需逐个比较查询
二、计算方式
if-else只是单纯地一个接一个比较,效率比较低;if…else是每个条件都要计算一遍的.
switch只计算一次值,然后都是test , jmp,
switch的效率与分支数无关
当只有分支比较少的时候,if效率比switch高(因为switch有跳转表)
分支比较多,那当然是switch
三、代码清晰度
有很多else if的时候,用switch case比较清晰
四、查找方式
相比于if-else结构,switch的效率绝对是要高很多的,但是switch使用查找表的方式决定了case的条件必须是一个连续的常量。而if-else则可以灵活的多。
五、switch case语句
switch (表达式){
case 值1 : 语句1
break;
case 值2 : 语句2
break;
…
default : 语句n
break;
}
作者:
范晓冲
时间:
2014-1-2 08:26
776699 发表于 2014-1-1 17:14
一、效率
switch和if-else相比,由于使用了Binary Tree算法,绝大部分情况下switch会快一点,除非是if-el ...
厉害,看来挺听明白的
作者:
qq884024720
时间:
2014-1-2 08:41
switch...case与if...else的根本区别在于,switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch...case不用像if...else那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。
作者:
向阳泪无痕
时间:
2014-1-2 13:00
简单点来想就是 wwitch 相当于物理中学的单路多线开关 if就是我们常用的判断语句
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2