0

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

Cards[] temp = new Cards[13];

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

4

4 回答 4

5

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

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

于 2013-10-24T12:01:01.480 回答
2

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

Cards[] temp = new Cards[13];

在此行temp[0],temp [1] ....temp[12]值分配为 null 之后。

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

for(int i=0;i<temp.length;i++){
      temp = new Cards();
}
于 2013-10-24T12:01:59.757 回答
1

当你说

Cards[] temp = new Cards[13];

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

于 2013-10-24T12:08:59.863 回答
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]);
}
于 2013-10-24T12:18:10.987 回答