我发现新操作员有点混乱。我现在的理解是
new ClassName(...)
是制作一个实例并调用Class'构造函数。但是在启动数组时新做了什么?例如,我觉得下面的两个新运算符是不同的,但无法解释清楚。
Employee[] staff = new Employee[3];
staff[0] = new Employee(...);
有什么不同吗?
感谢。
答案 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(...);
类型对象的引用。
答案 2 :(得分:1)
当你打电话给班级'构造函数,创建该类的实例(对象)。 "新"是关键字告诉编译器创建一个对象。数组是一个类,您可以创建类型为Array of SomeClass的对象。您需要使用关键字" new"因为你还在创造一个物体。