程序如下:
for (int i = 0; i < names.length; i++) {// 初始化List集合
Person person = new Person();
person.setName(names[i]);
person.setId_card(id_cards[i]);
list.add(person);
}假设names.length为3,循环中对象person被创建了3次?在内存中为person分配了3次内存吗?同一对象名可以被反复声明多次吗?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【insect_fly】截止到2008-08-03 04:18:47的历史汇总数据(不包括此帖):
    发帖的总数量:3                        发帖的总分数:40                       每贴平均分数:13                       
    回帖的总数量:3                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:3                        未结的总分数:40                       
    结贴的百分比:0.00  %               结分的百分比:0.00  %                  
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=insect_fly
      

  2.   

    1 Person person = new Person(); 
    你是写在循环里面的,每次运行时,连对象的引用都不一样,何况对象。所以不存在重复声明的问题。2 只要你每次new Person, 则会产生一个新的对象,其赋值给的引用,person 就会变化为指向新的地址。
    所以是一个对象引用,被不断的赋值给了不同的对象而已
      

  3.   

    是创建创建了3个不同的对象,list里面分别存储了这三个对象
      

  4.   

    list中放了3个对象,每次new时都会创建一个新的,并把它赋给person,也就是说person指向了新的地址
      

  5.   

    其实person变量只定义了一次,所以不存在变量重复定义的问题,只是每次循环都让它指向了一个新的地址,在加入list的时候加的就是那个新new的地址而已
      

  6.   

    list中放了3个对象,每new一次就会创建一个新的对象,变量只定义了一次,不存在重复定义的问题
      

  7.   

    第一次执行这句Person person = new Person();时
    person是一个引用指向了刚刚创建的Person对象,person这个引用
    放在了栈里,Person对象放在堆里。第二次执行这句Person person = new Person();时person这个引用就不指向之前创建的第一个Person对象了,
    而是指向了刚刚创建的第二个Person对象,注意这里并没有
    再次声明一个person引用,只是原来的person指向新的Person对象而已。