A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

代码定义在循环内和定义在循环外有什么区别呢?这两种方式有什么好坏之分?
  1. public class Test2 {  
  2.   
  3.     public static void main(String[] args) {  
  4.          
  5.         // 放入10000000的元素  
  6.         List<Object> list = new ArrayList<Object>(10000000);  
  7.         for(int i = 0; i < 10000000; i++) {  
  8.             list.add(i, new Object());  
  9.         }  
  10.          
  11.         // 做10次循环,求均值  
  12.         for(int j = 0; j < 10; j++) {  
  13.               
  14.             // 变量在循环内定义  
  15.             long t1 = System.currentTimeMillis();  
  16.             for(Iterator<Object> iterator = list.iterator(); iterator.hasNext();) {  
  17.                 Object object = iterator.next();  
  18.             }  
  19.             long t2 = System.currentTimeMillis();  
  20.             System.out.println("循环内" + (j + 1) + "次, 时间:" + (t2 - t1) + ";");  
  21.               
  22.             // 变量在循环外定义  
  23.             t1 = System.currentTimeMillis();  
  24.             Object object = null;  
  25.             for(Iterator<Object> iterator = list.iterator(); iterator.hasNext();) {  
  26.                 object = iterator.next();  
  27.             }  
  28.             t2 = System.currentTimeMillis();  
  29.             System.out.println("循环外" + (j + 1) + "次, 时间:" + (t2 - t1) + ";");  
  30.         }  
  31.     }  
  32. }  
  33.   
复制代码

3 个回复

倒序浏览
想你这种情况的话定义在外面比较好。因为就是一个复用变量嘛。
你在循环内定义的话  你需要在内存里面定义这么多个变量。
耗内存呗。结果还是一样。
回复 使用道具 举报
    定义在内部时,每次for循环 都会创建一次...  你执行多少次 他就创建多少次。 定义在外部 就是创建一次  然后多次操作  操作的还是那一个。
回复 使用道具 举报
变量定义在内部的话是是不可以输出,在循环完之后就被释放了,而外面的话就可以输出,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马