2014-11-02 78 views
0

我基本上需要允許用戶創建多個對象並將它們存儲在一個數組中。如果對象與另一個對象具有相同的名稱,是否會重寫對象?

我怎樣才能做到這一點的方式,這樣,當一個新的由以前的對象不會被覆蓋。

例如,當一個新制成,它會出現在以下形式:

UndergradTA student = new UndergradTA(); 

然後它將被存儲在與它的信息的數組。

但如果一個新制成,它仍然會被命名爲「學生」。那麼它不會覆蓋以前的對象嗎?

+0

你的問題是混亂的。對象不會相互「重疊」,對象也不具有名稱。變量有名字,但它們並不像你想像的那麼重要。你正在尋找使用ArrayList而不是數組?這是你的問題嗎? – 2014-11-02 03:58:20

回答

0

當你的代碼:

Object myVar = new Object(); 

就表示myVar的將是一個對象的新實例的引用。如果您然後執行第二項任務:

myVar = new Object(); 

然後,原始參考將丟失。

不過,如果你有一個數組:

Object myArray[] = new Object[5]; 
myArray[0] = new Object(); 
myArray[1] = new Object(); 
... 

然後引用不會丟失。它們將通過索引到數組中來訪問。

0

如果你把這些對象數組,然後你不會失去你提到他們。學生=新的UndergradTA()只是指派學生參考新的對象。一旦數組已經指向這個對象,那麼你可以重新分配學生。

0

只要你有你的對象的引用,它不會被垃圾收集。以下示例爲您提供了這個想法。

public class Main { 
public static void main(String[] args) { 
List<Foo> myList = new ArrayList<Foo>(); 
Random random = new Random(); 
for (int i = 0; i < 10; i++) { 
    Foo foo = new Foo(random.nextInt()); 
    myList.add(foo); 
} 
for (Foo foo : myList) { 
    System.out.println(foo); 
} 
} 
} 

class Foo { 
    private int val; 
    Foo(int val){ 
     this.val = val; 
    } 

    public String toString() { 
     return "foo.val = " + val; 
    } 
} 
相關問題