2

谁能解释一下,为什么我必须使用这个代码模式?

    // Create the array to store the CDs.
    CD[] cdLibrary = new CD[20];

    // Populate the CD library with CD objects.
    for (int i=0; i<20; i++)
    { cdLibrary[i] = new CD(); }

我不明白为什么我调用new CD[20]. 好像我在写多余的代码。可以跳过这些步骤之一吗?

4

2 回答 2

8
CD[] cdLibrary = new CD[20];

这只不过是创建一个“容器”,您将在其中存储引用。把它当作饼干罐,适合 20 个饼干。此时您实际上还没有创建 cookie,您刚刚创建了一个 jar(数组),它可以容纳指定数量的 cookie(CD在本例中为对象)。

for (int i=0; i<20; i++) {
 cdLibrary[i] = new CD(); 
}

这将创建 20 个 cookie 并将其放入罐中。

编辑:Jon Skeet 在评论部分提到了一个非常好的观点,请务必查看。他的类比没有这个问题,应该被认为更准确(尽管饼干比纸更有趣)。

于 2013-08-21T16:22:42.897 回答
8

我不明白为什么数组中对象的初始化不在运算符 new 中执行。

你是说这条线吗?

CD[] cdLibrary = new CD[20];

不会初始化 20 个对象。它初始化数组,并且只有数组 - 数组有 20 个元素,每个元素的值null(空引用)以1开头。这就像用给定数量的空白页创建一本书;如果您希望页面包含信息,则必须分别在每个页面上书写,这就是后面的循环所做的。


1CD为简单起见,我假设这是一个类类型。

于 2013-08-21T16:24:57.667 回答