黑马程序员技术交流社区

标题: if esle 和 switch case 哪个比较好? [打印本页]

作者: xietansheng    时间: 2014-3-2 12:56
标题: if esle 和 switch case 哪个比较好?
本帖最后由 xietansheng 于 2014-3-3 08:50 编辑

当要完成一些选择功能时,if else 和 switch case都可以实现,哪个比较好,哪个效率比较高?
作者: 曾振华    时间: 2014-3-2 13:00
1. 如果判断具体数值不多,符合byte,short,int,char类型,建议使用switch.

2.其他情况:对区间判断、对结果为boolean类型判断,使用if.
作者: volvoxc    时间: 2014-3-2 13:05
switch的case条件都是编译期整数常量,编译器可以做到表格跳转查询,查找速度快,
缺点是:case条件都是编译期整数常量

if/else是一个挨一个的查询,速度较慢,
优点是:不限比较类型和内容,你可以使用double,float,string或是自定义类型,比较双方不必是编译期常量。
作者: l939    时间: 2014-3-2 21:23
switch的作用范围不大,它适合于数值不多的情况,并且还得是int char byte short这几种类型,这样效率稍高些。。但是,你想想,要是你要判断一大堆的数,switch不知道要写多少个case.....
而if使用区间判断,大大的缩小了代码的长度,而且if的作用范围更广,它没有switch的类型和内容限制
作者: Amorvos    时间: 2014-3-2 21:56
你这问的好比是吃馒头好还是吃米饭好。
当你有较多比较项时,用switch
但你只有较少比较项时,用if
糟烂的代码总是有过多的if判断,合理的逻辑最重要
作者: xiaochen33520    时间: 2014-3-2 22:53
各有各的好,如果不看用法的话,switch case比 if else效率略高, switch case 在类加载时就这个代码块就已经被加载进内存中了,而 if else必须执行的时候才会被加载进内存.   if else用的比较多, switch case只有在知道条件的情况下才会使用,而且他的条件类型只有4个:byte short int char.。




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