数组中的java new运算符

时间:2015-01-23 17:23:45

标签: java

我发现新操作员有点混乱。我现在的理解是

new ClassName(...)

是制作一个实例并调用Class'构造函数。但是在启动数组时新做了什么?例如,我觉得下面的两个新运算符是不同的,但无法解释清楚。

Employee[] staff = new Employee[3];
staff[0] = new Employee(...);

有什么不同吗?

感谢。

3 个答案:

答案 0 :(得分:4)

new Employee[3]创建一个可以保存对3个Employee实例的引用的数组。它们中的每一个都被初始化为null。 staff[0] = new Employee(...);创建一个Employee实例,并将其引用分配给数组的第一个索引。

答案 1 :(得分:3)

Employee[] staff = new Employee[3];

正在初始化Employee的数组,其中包含3"地点"它可以保存对Employee个对象的引用 这意味着它保留了RAM中{(1}}类(例如10字节)的一个对象/实例所需空间的3倍(=> 30字节)。
但你的数组是用" null"初始化的。 虽然Employee正在创建对新创建的staff[0] = new Employee(...);类型对象的引用。 arrays

答案 2 :(得分:1)

当你打电话给班级'构造函数,创建该类的实例(对象)。 "新"是关键字告诉编译器创建一个对象。数组是一个类,您可以创建类型为Array of SomeClass的对象。您需要使用关键字" new"因为你还在创造一个物体。