黑马程序员技术交流社区
标题:
if else与switch区别
[打印本页]
作者:
王运科
时间:
2012-3-30 15:20
标题:
if else与switch区别
方法一:
if(... ...)
... ...
else if (... ...)
... ...
else if (... ...)
... ...
else
... ...
方法二:
switch(... ...)
{
case 1:
... ...
break;
case 2:
... ...
break;
case 3:
... ...
break;
}
在使用的时候,上面两种方法有什么不同?
作者:
黄或俊
时间:
2012-3-30 15:40
if else 作用范围广
switch语句可选择的类型只有四种:byte , short , int , char
作者:
刘晓康
时间:
2012-3-30 16:01
switch进行一次条件判断后直接执行到程序的条件语句.
if...else有几种条件,就得判断多少次.
如果纯粹比较数字或字符,建议使用switch,因为它只会在一开始的switch括号中取出变量值一次,然后将这个值与下面所设定的case比较,但如果使用if,每次遇到条件式时,都要取出变量值,效率的差异就在这儿。例如:
if(a == 1)
//...
else if(a == 2)
//...
else if(a == 3)
//...
这个程序片段在最差的状况下,也就是a =3时,共需3次比较,而每次比较都必须取出变量a的值一次。如果换成switch:
switch(a)
{
case 1:
//...
break;
case 2:
//...
break;
case 3:
//...
break;
}
在这个程序片段中,只在开头switch的括号中取出变量a的值,然后逐一比较下面的case,效率的差别就在这儿。当然并不是使用if就不好,遇到复合条件时,switch就帮不上忙了,由于无法在switch中组合复杂的条件语句,这时就得使用if了。
注意:如果所有选项出现概率相同的话,结论就是:5个选项(包括default)的情况下,switch和if/elseif相同。低于5个选项if快,高于5个选项switch快!
作者:
刘_浩
时间:
2012-3-30 16:04
if else 作用范围广
switch语句可选择的类型只有四种:byte , short , int , char
而且if-else适用于区间问题,而switch适用于明确单个问题。
作者:
何万县
时间:
2012-3-30 16:06
switch进行判断后直接执行到符合条件的语句.
if...else和switch的比较原理差不多,只是switch语句可选择的类型只有四种:byte , short , int , char,后面的JDK也支持string,而if的选择类型随意,方便一些,只是书写麻烦
作者:
翟友伟
时间:
2012-3-30 16:24
if使用范围更广 可以很多条件来 限制 范围
switch 比较单一。。 一般只对 选择 条件不多的 只有几个 选择项 用 更方便 。。。。。。。。
作者:
李井山
时间:
2012-3-30 18:31
if...else范围广,switch 比较单一。
if...else没有switch 效率高。
作者:
姜志钦
时间:
2012-3-30 20:24
if else if else 适用于区间判断还有其他方面的选择,而switch用于等值判断,一般是一个个点。补充楼上一点,jdk1.7 switch也支持字符串了!
作者:
陈扬
时间:
2012-3-30 22:17
1.if-else 作用范围广而且if-else适用于区间问题,但是在执行的时候需要一条一条地去判断if else 里面的条件
2.switch语句可选择的类型只有四种:byte , short , int , char;再有switch,就是先判断条件,如果符合就直接执行条件的那个代码块;
3.如果同一个问题用if-else和switch来做的话,相对来说switch的执行效率会更高。
作者:
陈志伟
时间:
2012-3-30 22:28
表面上的区别:
if(condition){}else{}中condition必须是boolean类型;
而switch (key) {
case value:
break;
default:
break;
}
中key必须是int类型或兼容类型。 在某些情况下break还可以换成别的如:
static int Mine(int i){
switch(i){
case 0:{return 1; }
case 1:{return 0; }
}
return是返回,其实它同时结束了方法,所以在这种情况下他可以代替break;
内层区别:
switch是控制选择的一种方式,编译器生成代码时可以对这种结构进行特定的优化,从而产生效率比较高的代码。switch和if-else相比,由于使用了Binary Tree算法,绝大部分情况下switch会快一点,除非是if-else的第一个条件就为true,只是在实际开发中 没有人会去用很多很多else if的,都是用 switch case 的 ,后者比较清晰,给人感觉就是一个脑子很清楚的人写出来的东西编译器编译switch与编译if...else...不同。不管有多少case,都直接跳转,不需逐个比较查询。相比于if-else结构,switch的效率绝对是要高很多的,但是switch使用查找表的方式决定了case的条件必须是一个连续的常量。而if-else则可以灵活的多。 可以看到if-else只是单纯地一个接一个比较,效率比较低,可以看出,switch的效率一般比if-else高。
作者:
黑马老兵
时间:
2012-3-31 13:57
跟着学习了。
作者:
张龙
时间:
2012-3-31 21:51
if else if使用在范围较大的情况,挨个判断条件,而switch 数据类型限于byte,short,int,char,一般用于数据明确的多选情况,满足条件的case直接执行动作,略效率
作者:
袁计艳
时间:
2012-3-31 23:42
switch语句类似于枚举,但变量一定是用switch比较好,当变量不确定时用if else就比较好
if else 作用更范围广
作者:
申振华
时间:
2012-4-1 03:50
if else 表示判断条件。
swith 表示选择。
一个就好比判断题 只有true或false,根据返回的结果去执行逻辑代码。
而另一个好比选择题有a,c,d等等,根据你指定的选项去对应执行的逻辑代码。
这样形象的比喻希望你能懂。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2