【问题标题】:Why is the new keyword used twice to create object arrays为什么两次使用new关键字创建对象数组
【发布时间】:2013-12-19 19:45:38
【问题描述】:

我是 Java 新手,刚刚处理过对象数组。我很好奇为什么 Java 要求我对数组使用以下语法

SomeClass[] object = new SomeClass[50]; // any positive integer works
object[2] = new SomeClass(some, parameters);

据我了解,new 关键字为内存中的实例分配数据。我想知道为什么 Java 在这里两次使用 new 关键字。我认为它应该只在初始化对象时使用一次 new 关键字,而不是在声明它们时。所以,我的问题是:为什么 Java 在创建对象数组时会使用两次 new 关键字?

【问题讨论】:

  • 一个用于创建数组,一个用于创建对象 SomeClass 将存储在数组中的位置 3(索引 2)。
  • 因为您正在创建 两个 东西。
  • 谢谢;我现在明白了。我认为第一行是处理我创建的类,而不是它存储值的数组。我想如果普通数组(String、int 等)使用 new 关键字,我可能会更早想到它。感谢所有回答的人。
  • @Stopforgettingmyaccounts...:所有数组都是使用new创建的。没有“正常”数组这样的东西。

标签: java arrays keyword


【解决方案1】:

这里,new 关键字被使用了两次,因为正在创建两个对象——一个数组和一个恰好放置在数组中的SomeClass

【讨论】:

  • 哇,我很惊讶我以前从来没有这样想过。由于数组语法会导致创建一个 Array 对象,因此它会在那里创建数组对象。我不会想到的 ;)
  • @Stopforgettingmyaccounts... 建造一个可以容纳 50 个球的盒子,并不意味着里面有 50 个球。每次你想把它放进盒子里时,你都必须创造一个新球。
【解决方案2】:

第一个是创建一个引用数组。第二个是为数组中的每个元素创建实际的对象。

【讨论】:

    【解决方案3】:

    您需要创建 container(在您的情况下是一个数组),以及您创建的每个 element(也是一个 object)打算放在那个容器里。

    就您而言,我注意到您创建了一个包含 50 个元素的数组。这意味着您可以索引 object[0] 直到并包括object[49]。创建容器时,每个object[n] 将是一个null 引用。

    【讨论】:

      【解决方案4】:
      SomeClass[] object = new SomeClass[50];
      

      分配一个包含 50 个未初始化引用的数组

      object[2] = new SomeClass(some, parameters); 
      

      分配并实例化数组中第三个索引引用的对象

      【讨论】:

        猜你喜欢
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-01
        相关资源
        最近更新 更多