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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一片白 中级黑马   /  2014-4-29 12:19  /  1975 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 一片白 于 2014-5-4 16:09 编辑

如果都是 是否等于的情况
方法一:
int iValue;
if(iValue == 1)
{
}
else if( iValue == 2)
{
}
else
{
}
方法二:
switch(iValue)
{
    case 1:
    …………;
    case 2:
    …………;

}

请问这两种方法有什么区别么?
它们之间有没有优劣性,那种更好些?

评分

参与人数 1技术分 +1 收起 理由
张旭辉 + 1

查看全部评分

10 个回复

倒序浏览
if(可以是变量区间)

switch(常亮)
回复 使用道具 举报
这两种情况理论上可以相互转化。
if  else是一般的条件判断。
switch case的优点是当条件一样,结果类似时,可以分为不同的case,的到不同的结果。可以参考自己写过的代码做对比。每种题这两种都可以用。

评分

参与人数 1技术分 +1 收起 理由
张旭辉 + 1

查看全部评分

回复 使用道具 举报
if语句每次判断只能实现两条分支,如果要实现多种选择的功能,那么可以采用switch语句
回复 使用道具 举报
参数类型区别:if语句的参数是一个逻辑表达式,switch参数是一个值。所以我们应该根据实际情况来使用不同的语句。
效率区别:如果纯粹比较数字或字符,建议使用switch,因为它只会在一开始的switch括号中取出变量值一次,然后将这个值与下面所设定的case比较,但如果使用if,每次遇到条件式时,都要取出变量值,效率的差异就在这儿。(当然,如果在判断的次数比较少的情况下,这种区别几乎可以忽略)
希望我的回答可以给楼主一些启发吧。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
if else语句比较通用,一般的条件判断都能够使用,但是在条件分支比较多的时候使用if else就会显得很笨拙,可读性不强,而面对switch的时候就显得很直观,可读性很好,但是switch就是使用的范围有限,只能够对一些确定的字面量进行一个个的对比,所以具体使用哪种得看具体情况,原则上来说switch能做的if else一定能做。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
我的理解是,当需要逻辑判断到时候用if() else()   而不需要逻辑判断的时候用switch
回复 使用道具 举报
如果单纯的是根据某一个变量各种不同的值取执行各自的操作,建议使用switch,if..else 是最基本的判断,里面的条件可以各种复杂,而且还可以运算,只是太多的 ...else if..导致的后果就是可读性不好.
回复 使用道具 举报

if...else是顺序访问。

switch...case访问条件分支的方式像数组一样,是随机访。

他们各自的特点:

1、 总体上说,switch...case 效率要高于同样条件下的if...else,特别是当条件分支较多时。

2、switch...case占用较多的代码空间,因为它要生成跳表,特别是当case常量分布范围很大但实际有效值又比较少的情况,switch...case的空间利用率将变得很低。例如上面的代码,如果把case 10改成case 100,则会生成101个表项,而大部分表项是指向同一分支(default分支)。switch...case是在以空间换时间。

3、switch...case只能处理case为常量的情况,对非常量的情况是无能为力的。例如 if (a > 1 && a < 100),是无法使用switch...case来处理的。


评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
嘴角上揚ぃ读不 发表于 2014-4-29 20:06
if...else是顺序访问。switch...case访问条件分支的方式像数组一样,是随机访。他们各自的特点:1、 总体上 ...

谢谢你的回复,解释得挺清晰的哦。
回复 使用道具 举报
if那种是层层过滤,到每个if语句里面,而switch是只跑相应的case条件,所以你想想那个快一点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马