对象参考澄清

时间:2016-04-15 00:30:52

标签: java arraylist reference

如果我错了,请纠正我,我只想澄清一点,我理解这一点。

在java中创建对象时,使用new关键字后跟类类型。防爆。 new [someclassnamehere](); 根据构造函数,您可以在创建对象时通过在参数中提供参数来传递参数。

我不确定只使用new关键字创建一个新对象的代码行是否有用,因为实际上没有任何内容持有对该信息的引用。但它似乎是正确的。

因此,您可以使用type name创建一个包含对您要创建的新对象的引用的变量。例如:Employee someData;。但它还没有实际引用一个对象,因为尚未创建一个对象。所以通过应用上面讨论的信息: Employee someData = new Employee(name); 我们现在创建了一个Employee object,其中包含员工的某些名称。 new关键字创建了一个对象类Employee的实例,其中someData变量引用了新创建的对象。

所以现在可以说someData变量引用Employee object,因为它包含存储对象存储位置的内存地址。该地址将允许我们访问对象的实际数据,在这种情况下是员工的名称。

如果我创建的数据类型为ArrayList的{​​{1}},我可以将Employee存储在其中。所以我可以将Employee objects变量添加到arrayList以及someDatasomeData2等。 (只是假设它们都是相同的类型,但包含不同的员工信息)。 因此,每个变量都包含对这些对象的引用。然后,someData3对象也包含对这些对象的引用,因为ArrayList元素包含引用ArrayList的someData变量。

示例:

Employee Objects

我确信到目前为止我已经明白了这个想法,但是当你实际上没有创建一个参考变量时,稍微让我失望的是。

因此,假设您创建了一个创建对象的循环(正在从某个数据库中读取数据等)并将其添加到ArrayList.get(1) -> someData -> reference variable(address) -> employee Object ArrayList.get(2) -> someData2 -> reference variable(address) -> employee Object2 。在此循环中,您将收集所需的数据并使用该数据创建对象,然后将其直接添加到ArrayList

让我们说它看起来像这样(一些伪代码和实际代码的组合)

ArrayList

为简单起见,我们说循环运行了5次,因此创建了5个对象。 这意味着它向ArrayList<Employee> list = new ArrayList<Employee>(); // While data from the database still exist (while loop,etc) // extract some sort of data from the database, such as their name and hours // create an object of this information and store it in an ArrayList list.add(new Employee(name, hours); // end loop 添加了5个对象,并且对这些对象的引用实际上包含在ArrayList元素中。因此,要将第一个对象添加到ArrayList List,您将使用ArrayList(我很确定ArrayList从1开始而不是0用于索引),这将返回对该对象的引用。

编辑:请原谅我在这里的错误,我想我有一个脑筋混蛋并混淆了。我不知道为什么我认为ArrayList索引的工作方式与第二个

相同

这是通过使用循环创建对象的正确和标准方法吗?

1 个答案:

答案 0 :(得分:0)

  

我不确定只需要使用new关键字创建一个新对象的代码行是否有用,因为实际上没有任何内容持有对该信息的引用。但它似乎是正确的。

想象一下构造函数启动一个新线程。没有参考,但

new AmazingThread();

在这种情况下很好。

嗯,这个问题很大。是的,创建这样的对象是完全合法的。你可以想到ArrayList有自己的变量来存储引用。