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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 执笔梦 金牌黑马   /  2014-6-11 15:39  /  836 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 执笔梦 于 2014-6-11 16:48 编辑

import java.util.ArrayList;
import java.util.List;
/*
  这两种方法有什么不同,结果好像没什么不同。求解。
*/
public class ListDemoTest {

        public static void main(String[] args) {
                ListDemoTest  demo = new ListDemoTest();
                System.out.println(demo.getAList().size());    //5
                System.out.println(demo.getAList2().size());   //5
        }
        public List<A> getAList(){
                A a;
                List<A> AList = new ArrayList<A>();
                for(int i =0;i<5;i++){
                        a = new A();
                        AList.add(a);                        
                }
                return AList;
        }
        
        public List<A> getAList2(){
                List<A> AList = new ArrayList<A>();
                for(int i =0;i<5;i++){
                        A a2 = new A();
                        AList.add(a2);                        
                }
                return AList;
        }

}
class A{
        
}

2 个回复

倒序浏览
只是引用变量for循环结束后还活着不活着的问题,第一种定义在外面,for结束a还活着,指向最后new的那个对象,第二种,会不停的开栈,退栈,最后栈里面没有变量指向堆中的任何对象~~~
回复 使用道具 举报
第二种在不停的创建A对象引用,在内存上来说过于浪费资源而已
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马