如果一个对象与另一个对象同名,我会覆盖它吗?

时间:2014-11-02 03:52:54

标签: java class

我基本上需要允许用户创建多个对象并将它们存储在一个数组中。

如何以某种方式执行此操作,以便在创建新对象时不会覆盖先前的对象。

例如,当制作新的时,它将以下列形式出现:

UndergradTA student = new UndergradTA();

然后将其存储在包含其信息的数组中。

但是如果制作一个新的,它仍然会被命名为#34; student"。那不会覆盖以前的对象吗?

3 个答案:

答案 0 :(得分:0)

如果将这些对象放在数组中,那么就不会丢失对它们的引用。 student = new UndergradTA()只是指派学生引用新对象。一旦数组已经引用此对象,那么您可以重新分配学生。

答案 1 :(得分:0)

编码:

Object myVar = new Object();

您声明myVar将是对象的新实例的引用。如果您再执行第二项任务:

myVar = new Object();

然后原始参考将丢失。

但是,如果你有一个数组:

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

然后引用不会丢失。它们可以通过索引到数组中访问。

答案 2 :(得分: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;
  }
}