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

时间:2013-10-24 12:00:12

标签: java dynamic-arrays

我有这个数组Cards[] temp = new Cards[13];,其中Cards是一个有52个对象的类。据我所知,这个语句将创建一个数组,其中包含13个卡数据类型的对象。我只是想知道在将值放在这个数组中的值之前是一个NULL的垃圾? 我的意思是写完后

Cards[] temp = new Cards[13];

并且在放入实数值之前,此语句之后存在哪些元素。无论是空还是垃圾。更多的解释是在编译时13对象的内存将动态分配给数组或卡我想知道在编译时该内存中的值是什么。要么是NULL还是一些垃圾?

4 个答案:

答案 0 :(得分:5)

他们被初始化为null。它们不能是垃圾。

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

答案 1 :(得分:2)

在Java中,如果没有提供任何值,则所有对象引用都是initialized as null

Cards[] temp = new Cards[13];

将此行temp[0],temp [1] ....temp[12]值指定为null。

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

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

答案 2 :(得分:1)

当你说

Cards[] temp = new Cards[13];

这意味着您已经创建了名为temp的数组,其中包含13个引用。这些引用可以指向13个卡对象。此外,如果您有各个卡的52个实例变量,它们都将设置为null,因为它们是实例变量。我希望我能理解你的问题。

答案 3 :(得分:0)

请参阅官方文档:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

“默认值”部分:

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]);
}