记得以前看书,有过这样一种说法:下面第二种写法的效率会高一些,因为不用检查数组越界的问题,
请各位看看,是否真有这么回事。
我记不清楚是Java还是C语言了。for (int i = 0; i < allInFile.length; i++)
for (int i = 0; i <= allInFile.length - 1; i++)第一个说出是哪本书里写的,给30分。

解决方案 »

  1.   

    从没考虑过这个问题,我只考虑多重for循环会降低效率。解决问题才是王道。
      

  2.   

    数组越界是run-time Exeption,这样做不能提高效率吧
      

  3.   

    int j=allInFile.length;
    for (int i = 0; i <j ; i++)
    这样性能会高不少,特别是循环次数多的时候,
     你写的两种循环方式 , 没什么区别,循环次数是一样的,循环体自然也一样
      

  4.   

    第一个for循环结束后i的值是allInFile.length
    第二个for循环结束后i的值是allInFile.length-1
    第一个循环多一次判断
      

  5.   


    汗,不管是否给我们优化,首先都要保证自己代码的高效性吧
    写习惯了自然而然
    for(int i=0,len = allInFile.length;i<len;i++)
    {
    }那个< 和 <=貌似是数据库SQL优化中用到的....
      

  6.   

     allInFile
    上面体格for循环可能会出现数组越界的问题
      

  7.   

    java语言中第一种的效率高
    只有当循环只有1次的时候第二种效率会高点但这也只是理论上的
    这是最后的效率需要解决的地方,一般不必考虑
      

  8.   


    记得书里专门说过三楼的这种做法,强调这样做起不到取消异常检查的效果。
    只有按照第二种写法,在循环体内碰到allInFile[i]时,就不会检查是否越界。
    其他写法,每一次碰到allInFile[i],都会检查数组下标越界。
      

  9.   

    两种写法一样,你也不想想都有.length谁会不检查啊,嗨楼主啊无语中.
      

  10.   

    我记得是在03年初学Java时看的,国外的书,记得还有一条是字符串连接的效率问题。
    纠结于这个,只是想把这两种方法统一一下。
    现在项目里,两种写法都有,虽然可以强制统一,
    但还是有个理由比较好一些。
      

  11.   

    自测了一下啊,还是下面的快!
    import java.util.ArrayList;
    public class ForTest {
    public static void main(String[] args) {

    String[] s=new String[1000000];
    long start=System.currentTimeMillis();

    for(int i=0 ;i<s.length;i++){
    s[i]=String.valueOf(i);
    }
    System.out.println(System.currentTimeMillis()-start);


    String[] ss=new String[1000000];
    start=System.currentTimeMillis();
    for(int i=0 ;i<=ss.length-1;i++){
    ss[i]=String.valueOf(i);
    }
    System.out.println(System.currentTimeMillis()-start);



    }}
      

  12.   

    这里有个关于for循环的优化,不过跟楼主的题目没什么关系。
    http://www.darkshire.net/jhkim/programming/java/optimization.html
    再一种优化是
    for(int i = 0,length = array.length; i < length; i++){} 这样的代码在java类库里比较常见。
      

  13.   


    确实,其实大多数的系统性能的瓶颈不可能出现在这样的技术细节上。楼主提出的两种写法造成的性能差别,如果是C甚至是汇编语言的系统可能需要考虑,而对于java软件开发来讲完全可以忽略。