我基本上需要允許用戶創建多個對象並將它們存儲在一個數組中。如果對象與另一個對象具有相同的名稱,是否會重寫對象?
我怎樣才能做到這一點的方式,這樣,當一個新的由以前的對象不會被覆蓋。
例如,當一個新制成,它會出現在以下形式:
UndergradTA student = new UndergradTA();
然後它將被存儲在與它的信息的數組。
但如果一個新制成,它仍然會被命名爲「學生」。那麼它不會覆蓋以前的對象嗎?
我基本上需要允許用戶創建多個對象並將它們存儲在一個數組中。如果對象與另一個對象具有相同的名稱,是否會重寫對象?
我怎樣才能做到這一點的方式,這樣,當一個新的由以前的對象不會被覆蓋。
例如,當一個新制成,它會出現在以下形式:
UndergradTA student = new UndergradTA();
然後它將被存儲在與它的信息的數組。
但如果一個新制成,它仍然會被命名爲「學生」。那麼它不會覆蓋以前的對象嗎?
當你的代碼:
Object myVar = new Object();
就表示myVar的將是一個對象的新實例的引用。如果您然後執行第二項任務:
myVar = new Object();
然後,原始參考將丟失。
不過,如果你有一個數組:
Object myArray[] = new Object[5];
myArray[0] = new Object();
myArray[1] = new Object();
...
然後引用不會丟失。它們將通過索引到數組中來訪問。
如果你把這些對象數組,然後你不會失去你提到他們。學生=新的UndergradTA()只是指派學生參考新的對象。一旦數組已經指向這個對象,那麼你可以重新分配學生。
只要你有你的對象的引用,它不會被垃圾收集。以下示例爲您提供了這個想法。
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;
}
}
你的問題是混亂的。對象不會相互「重疊」,對象也不具有名稱。變量有名字,但它們並不像你想像的那麼重要。你正在尋找使用ArrayList而不是數組?這是你的問題嗎? – 2014-11-02 03:58:20