黑马程序员技术交流社区

标题: if...else if...和switch...case...有什么区别? [打印本页]

作者: laoyang    时间: 2011-11-6 20:08
标题: if...else if...和switch...case...有什么区别?
本帖最后由 laoyang 于 2011-11-21 10:53 编辑

if...else if...和switch...case...有什么区别?详细点呗
作者: 高美云    时间: 2011-11-6 20:10
switch...case与if...else的根本区别在于,switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch...case不用像if...else那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。所以从效率上来说由于if...else的遍历性,代码执行效率是不高的。
作者: 想好了再写    时间: 2011-11-6 21:26
switch 进行一次条件判断后直接执行到程序的条件语句.
if...else 有几种条件,就得判断多少次.   //可能这就是所说的,效率不同的根源所在吧
if...else可以进行条件范围的判断,switch只能进行具体数值的的判断
eg:
if(a>10&a<20){

//程序代码

}elseif(a<=20&a>30){

//程序代码

}

完成上面的代码对于switch来说,就是很麻烦的事情了

switch(number){
case 1:
        //程序代码
        break;
case 2:
        //程序代码
        break;
}
实现上面的功能用switch效率就会更高些
在if语句中当判断结果为true也就时,就会进入到相应的if(或eleseif)中执行程序代码。然后跳出if...else 语句块执行if后面的程序代码,而switch则是当找到某一个case与判断条件一致时,进入到相应的case中执行代码,并查看是否该case中是否有break语句,如果有break则跳出switch,转到后面的程序代码执行,如果没有则会继续执行下面的case语句中的程序代码,直到遇到break或者switch完成,才转入到switch下面的代码进行执行
总结来说:在确切知道条件结果,并且结果有限下的条件下可以使用switch,在不能确切表示结果的情况下最好用if...else,在使用switch时候一定要注意break的使用。切记!切记!!

作者: 邱本超老师    时间: 2011-11-6 21:26
看你的需要去用。IF/ELSE可以处理复杂的逻辑关系,用switch/case处理的都可以用IF/ELSE处理,但是switch/case有局限性,说个例子给你听
关于个人所得税的征收
超过800低于1600部分 收1%
超过1600低于5000部分 收2%
超过5000低于20000部分 收3%
超过20000低于100000部分 收4%
乍一看这题好像是switch/case比较省事,但是再实际过程中会发现每个CASE之间数字的跨度不一样,到后面会越来越大,无法用简单办法处理。这样用IF/ELSE就十分方便了
当然能用switch/case的话可以减少不少代码的输入.
作者: 想好了再写    时间: 2011-11-6 21:26
switch 进行一次条件判断后直接执行到程序的条件语句.
if...else 有几种条件,就得判断多少次.   //可能这就是所说的,效率不同的根源所在吧
if...else可以进行条件范围的判断,switch只能进行具体数值的的判断
eg:
if(a>10&a<20){

//程序代码

}elseif(a<=20&a>30){

//程序代码

}

完成上面的代码对于switch来说,就是很麻烦的事情了

switch(number){
case 1:
        //程序代码
        break;
case 2:
        //程序代码
        break;
}
实现上面的功能用switch效率就会更高些
在if语句中当判断结果为true也就时,就会进入到相应的if(或eleseif)中执行程序代码。然后跳出if...else 语句块执行if后面的程序代码,而switch则是当找到某一个case与判断条件一致时,进入到相应的case中执行代码,并查看是否该case中是否有break语句,如果有break则跳出switch,转到后面的程序代码执行,如果没有则会继续执行下面的case语句中的程序代码,直到遇到break或者switch完成,才转入到switch下面的代码进行执行
总结来说:在确切知道条件结果,并且结果有限下的条件下可以使用switch,在不能确切表示结果的情况下最好用if...else,在使用switch时候一定要注意break的使用。切记!切记!!

作者: wangqing    时间: 2011-11-8 06:24
if与switch的区别:
if可以判断具体的值和区间,并且可以判断布尔类型的值
switch可以判断具体值和区间(区间不应太大),但不能判断布尔类型的值
如果判断的具体值不多,并且符合byte,short,int,char这四种数据类型,建议使用switch;其他情况,对区间的判断,对结果为boolean类型的判断,可以使用if(if的判断范围更广)




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