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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴涛 中级黑马   /  2014-3-5 15:17  /  1219 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

if-else if和switch的底层实现原理,是怎么样的?
为什么,switch就比if-else if高效?
对这两个的使用,一般选择哪个?根据什么来选择?

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

3 个回复

倒序浏览
if和switch语句很像具体什么场景下应该使用哪个语句?
对于判断的具体数值不多,而且符合byte、int、short,char这四种类型,两个都可以使用建议使用switch;效率高原因是:switch语句与case搭配如果判断一旦匹配就会break;而if-else用于区间的判断比较合适,返回结果是boolean。希望对你有帮助可参考毕老师对if和switch语句视频的具体讲解。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
这个大学老师有讲过,它俩的实现原理是不一样的,if...else的底层是比教语句,而swtich则是一张地址表,只比较一次就转到寻址里边。但是,我感觉还是具体问题具体分析,只是大多时候swtich的效率比较高,也有特殊情况的。总的来说,如果判断分支比较多,就用if...else的话会把自己给绕糊涂的,用swtich则比较清晰。仅供参考。。。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
原理我就不清楚了,但是用法太清楚了!如下:


如果判断的具体数值不多,而是符合byte short int char这四种类型。
虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。

其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马