黑马程序员技术交流社区

标题: 判断语句问题 [打印本页]

作者: 王希军    时间: 2013-8-2 16:04
标题: 判断语句问题
本帖最后由 杜光 于 2013-8-4 10:30 编辑

if语句和swith语句哪个语句运行效率更高些?
作者: 哪颗最亮的星星    时间: 2013-8-2 16:37
当然是switch了,而且switch现在也支持字符串了,好像是1.7的新特性!!!!!!!!!!
作者: 诸隆隆    时间: 2013-8-2 16:41
主要看情况,如果是一个判断,正反两个选择,当然就用if了,然后开始执行语句就行了。但是,如果是一个对象,好几个可能的判断结果,每个结果都不一样执行,这就用swiith方便高效
作者: 王靖远    时间: 2013-8-2 17:12
switch语句效率高。这是张孝祥老师说的,具体为什么可以百度一下。
作者: 王希军    时间: 2013-8-2 17:16
王靖远 发表于 2013-8-2 17:12
switch语句效率高。这是张孝祥老师说的,具体为什么可以百度一下。

o           
作者: 夜空闪亮    时间: 2013-8-2 17:34
if和switch这两个语句的效率即使有差别也相差不大,主要是两者应用的情况不一样.switch是选择结构,它只能用来判定是否相等,相等则执行相应的case;但if语句不但可以支持选择结构,更主要的是可以进行区间的判定,比如当100<i<1000之间时,要执行某段代码,此时显然无法用switch来进行判断,只能用if.这种区别决定了switch和if的应用情景,这才是重点,执行效率可以说没区别!
作者: 倪大叶    时间: 2013-8-2 17:48
swith 效率要高点,但目前我有if 要用得多点。。
作者: 逆袭的风    时间: 2013-8-2 18:50
本帖最后由 逆袭的风 于 2013-8-2 18:58 编辑

switch...case与if...else的根本区别在于,switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch...case不用像if...else那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。
相比于if-else结构,switch的效率绝对是要高很多的,但是switch查找的方式决定了使用上不如if-else灵活多变。

另外:if 一般适用于情况较少的条件出现,要么执行A,要么执行B。
        但是有时要用到众多的if 就非常的繁琐,像这种多分支的选择,我们一般采用switch.switch 适合多种情况,且变量是精确值.


作者: 黑马王晓明    时间: 2013-8-2 19:18
1.使用场景:首先它们都是用来判断,模拟生活中需要判断之后做出处理的情况
2.如果判断的条件为区间用if  只能用if 不能用switch
3.如果判断的条件为等值判断,用switch 也可以用if
也就是说if 二者通用 switch只能判断条件为区间的
作者: 645420297    时间: 2013-8-2 21:31
if主要用于 有固定数值的寻环,而switch反之
作者: xuaner0719    时间: 2013-8-2 21:41
多重if和switch结构的区别
1都用来结构多种判断情况
2if用来解决判断为区间,也可以用来做等值判断
3switch只能用来完成等值判断

循环比较
1 while 用在java语言自身系统中,用来遍历java语言自身系统中提供的集合,
如果循环次不确定用while()打印今天的所有用新闻   while(result.hasNext()){}
2 for用在遍历之前,次数是给定或确定的。打印全班的java成绩
3 for循环能提高内存使用效率






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