Java 创建MyClass的n*n数组会创建实例还是其他什么?

Java 创建MyClass的n*n数组会创建实例还是其他什么?,java,Java,假设有一个类MyObject,它有一个MyClass()构造函数,并且得到了正确的实现 当我们调用这行代码时,它会创建MyClass对象的实例还是会发生其他事情 编辑:显然这个问题没有得到很好的回答。我很抱歉,如果它是模糊的或什么的。这仅仅是一个家庭作业问题,需要T/F 我想问: 如果我们有 MyClass[][]x=新的MyClass[n][n];//其中n是一个数字 它会创建n*n个MyClass对象实例还是仅仅创建n*n个空引用 原来 MyClass[][] x = new MyClass

假设有一个类MyObject,它有一个MyClass()构造函数,并且得到了正确的实现

当我们调用这行代码时,它会创建MyClass对象的实例还是会发生其他事情

编辑:显然这个问题没有得到很好的回答。我很抱歉,如果它是模糊的或什么的。这仅仅是一个家庭作业问题,需要T/F

我想问: 如果我们有 MyClass[][]x=新的MyClass[n][n];//其中n是一个数字 它会创建n*n个MyClass对象实例还是仅仅创建n*n个空引用

原来

MyClass[][] x = new MyClass[n][n]; // where n is a number
x[0][0] = new MyClass();
不同于

MyClass x = new MyClass();

如果数组是任何对象,那么数组中的每个插槽最初都是
null
(基本数据类型只会产生它们的默认值)。就像
字符串x
其中
x
将是
null
,就在本例中,它是一个
null
值的数组

数组仍然是为其创建的相同类型的对象,例如字符串,只是所有插槽都是
null
,需要实例化。例如
bigArray[1]=新字符串(“Hello!”)

如果希望数组包含某种默认值,则需要填充数组

MyObject array = new MyObject[3]; //New array that can hold three
for(int i = 0; i < array.length; i++){ //Start i at zero, while it's less than the spots in the array, and add one every time
    array[i] = new MyObject(); //Set the spot to a "real" object now.
}
MyObject数组=新的MyObject[3]//可容纳三个阵列的新阵列
对于(inti=0;i
您试过了吗?如果你有一个实际接受参数的构造函数呢?行为会改变吗?这个问题似乎离题了,因为只要尝试一下就会得到答案。它会创建数组类的实例。一个
MyClass[]
引用数组和十个
MyClass
引用数组。它不创建任何
MyClass
的实例。当您分配一个引用数组时,引用被初始化为
null
。没有空对象之类的东西。从我的观察,如果它为null,那么它就不是一个对象,对吗?是的,
null
意味着指针(对象在内存中的位置)不能指向任何地方,因为没什么可指的。您还没有创建对象。@DeadChex是否有可能使它们不为null和实际实例?更改构造函数可以做到这一点吗?应该注意的是,当您执行
新建MyObject[10][10]
时,“隐藏”编译器会创建基本的
MyObject[]]
数组,然后创建十个实际的
MyObject[]
数组来初始化基本数组中的插槽。在这种情况下,创建数组实际上会将null/zero以外的内容放入插槽。@HotLicks谈论编译器在运行时实际执行的操作有点危险。