黑马程序员技术交流社区
标题:
关于 if else 、switch、for循环的疑惑
[打印本页]
作者:
孔肖
时间:
2012-9-7 15:43
标题:
关于 if else 、switch、for循环的疑惑
老师在视频中讲到 switch的效率比if else 的高,在网上查了查,有很多分歧的地方,这里想请高手讲一讲它们运行的效率问题。并且switch和for循环的比较又是怎么样?
(这里不考虑代码书写简便与否的问题,只考虑效率与用法问题)
public class Test
{
public static void main(String[] args)
{
// 一下代码仅为演示,不考虑书写简便与否的问题
// switch 和 if else 的比较 (同样是遍历,为什么switch效率高呢?这里不考虑判断多少的问题)
char x = 'b';
if(x=='a')
System.out.println("a");
else if(x=='b')
System.out.println("b");
else
System.out.println("no");
switch('b')
{
case 'a':System.out.println("a");break;
case 'b':System.out.println("b");break;
default :System.out.println("no");
}
// switch 和 for循环的比较 (同样是遍历,它们的效率又是怎么样的呢?这里不考虑遍历多少的问题)
for(int i=1; i<=3; i++)
System.out.println(i);
switch(1)
{
case 1:System.out.println(1);
case 2:System.out.println(2);
case 3:System.out.println(3);
}
}
}
作者:
孙岳
时间:
2012-9-7 15:52
switch是if else在特定情况下的另一种写法,通用的情况下,效率是一样的。
switch是分支结构,用于判断,for是循环结构,用法不同,没法比。
既然讨论效率,数量的多少肯定是很重要的一个因素,不能不考虑。
而且cpu处理循环比单独处理多次更快一些。
作者:
广驰
时间:
2012-9-7 15:54
本帖最后由 应广驰 于 2012-9-7 15:59 编辑
for循环和switch没有多大的可比性,一个是主要选择语句,一个是循环
而switch查找有点类似于二分查找,他的变量条件选项需要是一个范围类的值,所以查找相对会比if快,但是switch的局限性相对就比较大了,而且还有一点,if每次都要判断表达式,而switch只要判断一次就行了
作者:
霍永刚
时间:
2012-9-7 16:19
switch和for循环我个人认为两者之间没有什么比较性,switch有分支机构,当做判断的时候用,效率要高一些;而for就是一个循环机构,for循环再栈内存里应该是循环结束之后就释放内存。
作者:
孔肖
时间:
2012-9-7 16:36
楼上诸位, 我知道 switch 和for循环没必要比较。 我只是为了多考虑一些。
但是各位,对于for循环而言,每次输出之后都要进行一次运算,然后再进行一次判断。。。而switch再没有break的情况下,会依次往下执行。
这样一来的话,switch的效率是不是比for循环的要高一些呢?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2