2014-09-18 58 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