我可能错了,但是从我在java中创建对象时的理解是:
Class object = new Class;
new Class
创建Class类型的新对象,然后将其应用于"object"
引用
所以当你通过以下方式创建对象数组时:
Class[] objects = new Class[10];
是否意味着new Class[10]
创建10个Class类型的对象,然后将其应用于objects
引用,或者仅保留10个Class类型对象的内存,您需要稍后创建某些对象
答案 0 :(得分:1)
稍后是正确的new Class[10]
将为内存中的10个对象创建一个占位符,您需要将对象明确地放在其中。
答案 1 :(得分:0)
new Class[10]
确实为10个占位符创建内存。它不会为单个条目分配内存。
答案 2 :(得分:0)
考虑以下示例: bool [] booleanArray; FileInfo []文件;
booleanArray = new bool[10];
files = new FileInfo[10];
这里,booleanArray是值类型System.Boolean的数组,而files数组是引用类型System.IO.FileInfo的数组。下图显示了执行这四行代码后CLR托管堆的描述。
尽管这是一个C#示例。这与我们在Java中的相似。
答案 3 :(得分:0)
对象将是指向指针数组的指针。这些指针将指向Class类型的对象。除了实际的指针之外,没有为任何人分配内存。所以 new Class [10] 会创建10个指针,由对象引用。
答案 4 :(得分:0)
创建对象数组类似于创建变量,即代码
Class[] objects = new Class[10];
可以解释为
Class object1;
Class object2;
...
使用它们或调用函数和访问变量我们必须调用构造函数,即。
object1 = new Class();
object2 = new Class();
因此Class[] objects = new Class[10];
创建了10个Class引用,并且没有为对象进行内存分配。为此,我们必须为它们调用构造函数,如object[0] = new Class();
现在已创建对象已分配内存,我们可以使用它们。
另外,如果在创建没有调用构造函数的对象数组之后,我们就像对象[0] .somefunction()一样使用它们,它将显示空指针异常。