在写程序的时候有下面两种方法
Vector a;方法一:
for(int i ; i<a.size(); i++){
   ……
}
方法二:
int b = a.size();
for(int i ; i<b; i++){
   ……
}
谁能帮助分析下方法一与方法二的性能。自己感觉好象方法二更好一些。但是有时候写程序的时候,又用到了方法一,自己写了一个时间的测试 在100个情况下根本看不出什么,用时候方法二用的时间比方法一还多。

解决方案 »

  1.   

    应该说是方法一的效率低些
    因为方法一每次循环都要进行a.size()的计算但是最终应该相差不了多少,循环的的话可能有点区别
      

  2.   

    如果你这个vector在for里面不会有变化(add/set/remove...),那么两个代码在本质上是一样的,只不过后者没有反复去执行同一段代码。100个是很难看出区别的,估计1000000个也只能看出10-100ms左右的差别
      

  3.   

    有时候a.size()会变化的,在这种情况下用方法一很容易出错,所以个人认为还是方法二好些。
      

  4.   

    java中性能差不多,不过用javascript的话方法二性能会提高很多
      

  5.   

    看具体情况。
    一般推荐用第二种。但是有些情况,a.size()发生变化,而你又要重新去计算 a.size()的时候,还是用方法1但是方法不推荐使用,可以用一些变通的方法来解决。毕竟方法1不安全。
      

  6.   

    同意shine333(enihs)
    不过也可以搞成
    Vector<Integer> a= new Vector<Integer>();
    //a.add(1);
    for(Integer i:a){
    ...
    }
    连size也省了
      

  7.   

    这样写for(int i,b=a.size(); i<b; i++){
       ……
    }
      

  8.   

    java5.0的可以避开这个性能了。