for(i = 0; i <  100000; i++){}for(i = 100000; i > 0; i--){}哪个for循环更快?为什么?

解决方案 »

  1.   

    for(i = 0; i < 100000; i++){}
    不知道为什么,还有这样的循环做什么的?一般承受不了吧
      

  2.   

    如果两个for都循环完 应该是一样的吧!
      

  3.   

    这两种方式运算都一样的不过现在JDK1.5以上版本的话
    都习惯用增强的For循环
    语法规则:for (Type element : Expression) {…}
      

  4.   

    for(i = 100000; i > 0; i--){}
    这个更快一些  原理不清楚
      

  5.   

    不同的jdk实现有不同的结果如果某个jdk实现可以重用局部变量区的j,而不是每次都重新分配一个j,那么效率应该和另外一种差不多http://topic.csdn.net/u/20101112/15/4548c7ba-56bf-4b88-841e-47a8491be47f.html 看7楼
      

  6.   

    for(i = 100000; i > 0; i--){};理论上这个快;
    这个问题还是很值得研究的,这个和计算机cpu的累加器有关,牵扯到位运算,1,0。等很多问题,只有高手能说的清,上面很多人回答不值得讨论 证明他们计算机理论很差
      

  7.   

    java虚拟机中可以重用不同作用域的变量且变量在方法执行前都已经分配好了另外,我也可以实现一个jvm,让你觉得快的循环执行的很慢,所以,隔了一层jvm,什么都不好说
      

  8.   

    我感觉是第二种快,但是不知道java虚拟机是怎么做的比较,如果是跟0做比较的话也许可以优化到只比较符号位,而和10000比较明显不行
      

  9.   

    1.少数据量中
      两个循环是没有区别的。2.百万及以上数据量中
    for(i = 1000000; i > 0; i--){}效率高。
      

  10.   

    谁告诉你foreach 快的?
    遍历一个List的情况下 用索引遍历 比foreach快很多的。。
      

  11.   

    用for循环,i--是比++快的,说一样的快瞎扯蛋,自己写个代码就知道了
      

  12.   

    应该是第二种快吧。从汇编的角度来说,你每次都必须比较 i < 10000的话。相当于两部
    第一步用减,即:sub i, 10000;然后再test i;之后再进行跳转。但是 i > 0的话,减法那一步就可以省略,直接test i就可以了。我觉得就这点儿细微的区别。
      

  13.   

    不过按照cpu的构造来说,在cpu中只设计了加法器,cpu对于加法的运算应该会快点(减法首先要转换成加法,进而再运算)。所以这样说加法应该会快点啦!
      

  14.   

    http://hi.baidu.com/freish/blog/item/b793042433594a3fd40742bf.html