A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© laoyang 黑马帝   /  2011-11-6 20:08  /  19669 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 laoyang 于 2011-11-21 10:53 编辑

if...else if...和switch...case...有什么区别?详细点呗

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 效率问题。

查看全部评分

5 个回复

倒序浏览
switch...case与if...else的根本区别在于,switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch...case不用像if...else那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。所以从效率上来说由于if...else的遍历性,代码执行效率是不高的。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
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的使用。切记!切记!!
回复 使用道具 举报
看你的需要去用。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的话可以减少不少代码的输入.
回复 使用道具 举报
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的使用。切记!切记!!
回复 使用道具 举报
if与switch的区别:
if可以判断具体的值和区间,并且可以判断布尔类型的值
switch可以判断具体值和区间(区间不应太大),但不能判断布尔类型的值
如果判断的具体值不多,并且符合byte,short,int,char这四种数据类型,建议使用switch;其他情况,对区间的判断,对结果为boolean类型的判断,可以使用if(if的判断范围更广)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马