如何检查Java中是否存在数组中的元素

时间:2009-03-07 22:31:17

标签: java arrays initialization

如果我有一个int数组结构如下:

private int[][] map = new int[400][400];

我尝试检索

map[100][200]

该元素未初始化,是否会出现编译器/运行时错误或是否返回null?是否有任何函数来检查给定的元素/索引是否存在/已设置?

6 个答案:

答案 0 :(得分:11)

由于您的数组声明属于基本类型,因此不会出现任何编译器或运行时错误 - 将返回默认值0。

如果您的数组是一个对象数组,那么对于未明确指定的任何元素,数组将保留null

答案 1 :(得分:3)

我不会返回null因为int是原始类型。它将返回默认int值,即0

没有办法知道是否已经设置了任何元素,没有保留单独的布尔数组。

答案 2 :(得分:2)

在Java中,只有引用变量被初始化为null。保证基元返回appropriate default values。对于整数,此值为0。

答案 3 :(得分:1)

没有

在这种情况下,您的数组元素只能容纳int s。没有地方存储有关元素是否“存在”的信息。它已被分配,因此它存在。在Java中,新分配的int数组将初始化为所有元素零。

答案 4 :(得分:0)

您可以在源代码上使用checkstylepmdfindbugs(二进制文件上的findbugs),他们会告诉您这样的事情。

不幸的是,它们看起来并不像是遇到了这个特殊的问题(这有理由保证数组的每个成员都设置为0,null或false)。

使用这些工具可以捕获在给定值之前使用的实例和类成员(不是数组)(类似的问题)。

答案 5 :(得分:0)

有点死的话题,但我偶然发现它,所以我要放置我的智慧(或其他:P)。您可以使用Arrays.Fill在使用无效值(如-1)创建数组时填充它。然后,您可以轻松地执行if x< 0来检查您是否已初始化该特定阵列位置。只是一个想法...