截取代码重要部分
public void testList() {
List<HiBean> list=new ArrayList<HiBean>();
HiBean hiBean;
for (int i = 0; i < 20; i++) {
hiBean = new HiBean();
hiBean.setAge(i);
list.add(hiBean);
}
loopList(list);
}
hibean是一个简单的java值对象.
按照我之前的理解,在这段程序中只存在一个HiBean的引用,也就是hiBean,只是在循环中每次指向了不同的对象实例,最后加入到list中的所有hiBean引用都是同一个也指向的是一个对象实例,结果就应该输出全都为19.
但是最后程序运行结果是输出0至19。
麻烦各位看看什么地方理解有误,谢谢

解决方案 »

  1.   

    错了,兄弟~
    容器存储的是引用,也就是你给list存储的时候是把这个引用的拷贝存储,这样就很明朗了吧~
    拷贝出来的引用和之前的引用是指向同一个对象,但是第二次循环的时候这个引用指向了另一个对象,这显然不影响第一次拷贝后的引用!
      

  2.   


    public void testList() { 
    List <HiBean> list=new ArrayList <HiBean>(); 
    for (int i = 0; i  < 20; i++) { 
        HiBean hiBean = new HiBean(); 
        hiBean.setAge(i); 
        list.add(hiBean); 

    loopList(list); 
      

  3.   


    public void testList() { 
    List <HiBean> list=new ArrayList <HiBean>(); 
    HiBean hiBean = new HiBean();
    for (int i = 0; i  < 20; i++) { 
        hiBean.setAge(i); 
        list.add(hiBean); 

    loopList(list); 
    } 这个是你想要地...