2014-09-18 55 views
1

我刚开始使用库,而不是从头开始创建所有东西,但它导致了一些我不明白的问题。对象没有重新分配

我有一个链接列表,我添加'信息' - 一个变量'年龄'和'名称'内的对象,但我很困惑。

List<ClientInfo> list = new LinkedList<>(); 
    ClientInfo information = new ClientInfo(); 
    information.age = 44; 
    list.add(information); 
    information = new ClientInfo(); // without this line it doesn't work, but i don't get why it shouldn't 
    information.age = 66; 
    list.add(information); 

    int age = list.get(0).age; 
    System.out.println(age); 
    age = list.get(1).age; 
    System.out.println(age); 

正如你可以在上面看到,它的完全工作,但是,当我删除注释行不工作了,它只是增加了66这两个领域,我不明白为什么这是肯定的,我可以修改信息对象而不必重新创建节点?

谁能告诉我为什么?

+1

它不会将66添加到这两个字段,它会覆盖您的对象的字段。您不能在同一个对象的字段中存储两个不同的值。 – RockOnRockOut 2014-09-18 20:46:51

+1

当你添加该行时,你创建一个新的对象,它可以存储你的新数据 – RockOnRockOut 2014-09-18 20:47:12

回答

3

如果没有这条线,你只有通过这两个年龄44和66岁一个实例共享 - 本质上是相同的对象得到了插入两次,并且都66岁,因为这将覆盖44

有了这条线,你创建了第二个实例,尽管重复使用了相同的变量,现在它指向/拒绝了不同的对象。

+0

那么接受他的答案然后:p 15代表是多个投票 – RockOnRockOut 2014-09-18 20:58:17

+0

刚刚发现剔,谢谢:P – Ben 2014-09-18 21:02:48