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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xietansheng 中级黑马   /  2014-3-2 12:56  /  737 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xietansheng 于 2014-3-3 08:50 编辑

当要完成一些选择功能时,if else 和 switch case都可以实现,哪个比较好,哪个效率比较高?

评分

参与人数 1黑马币 +5 收起 理由
何伟超 + 5

查看全部评分

5 个回复

倒序浏览
1. 如果判断具体数值不多,符合byte,short,int,char类型,建议使用switch.

2.其他情况:对区间判断、对结果为boolean类型判断,使用if.

评分

参与人数 1黑马币 +5 收起 理由
何伟超 + 5

查看全部评分

回复 使用道具 举报
switch的case条件都是编译期整数常量,编译器可以做到表格跳转查询,查找速度快,
缺点是:case条件都是编译期整数常量

if/else是一个挨一个的查询,速度较慢,
优点是:不限比较类型和内容,你可以使用double,float,string或是自定义类型,比较双方不必是编译期常量。

评分

参与人数 1黑马币 +5 收起 理由
何伟超 + 5

查看全部评分

回复 使用道具 举报
switch的作用范围不大,它适合于数值不多的情况,并且还得是int char byte short这几种类型,这样效率稍高些。。但是,你想想,要是你要判断一大堆的数,switch不知道要写多少个case.....
而if使用区间判断,大大的缩小了代码的长度,而且if的作用范围更广,它没有switch的类型和内容限制

评分

参与人数 1黑马币 +5 收起 理由
何伟超 + 5

查看全部评分

回复 使用道具 举报
你这问的好比是吃馒头好还是吃米饭好。
当你有较多比较项时,用switch
但你只有较少比较项时,用if
糟烂的代码总是有过多的if判断,合理的逻辑最重要

评分

参与人数 1黑马币 +5 收起 理由
何伟超 + 5

查看全部评分

回复 使用道具 举报
各有各的好,如果不看用法的话,switch case比 if else效率略高, switch case 在类加载时就这个代码块就已经被加载进内存中了,而 if else必须执行的时候才会被加载进内存.   if else用的比较多, switch case只有在知道条件的情况下才会使用,而且他的条件类型只有4个:byte short int char.。

评分

参与人数 1黑马币 +5 收起 理由
何伟超 + 5

查看全部评分

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