Java 初始化对象数组时,默认值是什么

Java 初始化对象数组时,默认值是什么,java,dynamic-arrays,Java,Dynamic Arrays,我有这个阵列卡[]临时=新卡[13];其中,Cards是一个具有52个对象的类。据我所知,此语句将创建一个数组,其中包含13个数据类型为Cards的对象。我只是想知道在把值放入这个数组之前,这个数组中有哪些值是空值? 我是说写完之后 Cards[] temp = new Cards[13]; 在输入实际值之前,这个语句后面的元素是什么。要么为Null,要么是一些垃圾。更多的解释是在编译时,13对象的内存将动态分配给数组或卡,我想知道编译时内存中的值是什么。Wither NULL或一些垃圾?它们

我有这个阵列卡[]临时=新卡[13];其中,Cards是一个具有52个对象的类。据我所知,此语句将创建一个数组,其中包含13个数据类型为Cards的对象。我只是想知道在把值放入这个数组之前,这个数组中有哪些值是空值? 我是说写完之后

Cards[] temp = new Cards[13];

在输入实际值之前,这个语句后面的元素是什么。要么为Null,要么是一些垃圾。更多的解释是在编译时,13对象的内存将动态分配给数组或卡,我想知道编译时内存中的值是什么。Wither NULL或一些垃圾?

它们被初始化为NULL。它们不可能是垃圾


该数组还包含13个引用,而不是13个对象。你问题的最后一部分我不明白。

在Java中,如果没有提供值,所有对象引用都初始化为null

Cards[] temp = new Cards[13];
在该行temp[0]之后,temp[1]……temp[12]值被分配给null

您需要创建如下所示的对象

for(int i=0;i<temp.length;i++){
      temp = new Cards();
}
当你说

卡片[]临时=新卡片[13]


这意味着您已经创建了一个名为temp的数组,该数组包含13个引用。这些引用可以指向13张卡片对象。此外,如果您有52个实例变量的个人卡,它将全部设置为空,因为他们是实例变量。希望我能很好地理解你的问题。

请参考官方文件:

“默认值”部分:

byte    0

short   0

int     0

long    0L

float   0.0f

double  0.0d

char    '\u0000'

String (or any object)      null

boolean     false
这意味着数组中的每个对象都有一个默认值null。和其他语言一样,没有垃圾值,只有null

您可以自己尝试:

for (int i = 0; i < temp.length; i++) {
    System.out.println(temp[i]);
}

您可以通过打印数组元素轻松地检查它。初始化为NULL且没有垃圾。对象引用初始化为NULL。