如何检查Java中是否存在数组中的元素
-
05-07-2019 - |
题
如果我有一个像这样结构的int
数组:
private int[][] map = new int[400][400];
我尝试检索
map[100][200]
该元素未初始化,是否会出现编译器/运行时错误或是否返回null?是否有任何函数来检查给定的元素/索引是否存在/已设置?
解决方案
由于您的数组声明属于基本类型,因此不会出现任何编译器或运行时错误 - 将返回默认值0。
如果你的数组是一个对象数组,那么对于没有专门指定的任何元素,数组将保持null
。
其他提示
我不会返回null
因为int
是原始类型。它将返回默认的0
值,即<=>。
没有办法知道是否已经设置了任何元素,没有保留单独的布尔数组。
在Java中,只有引用变量被初始化为null。基本保证返回适当的默认值一>。对于整数,此值为0。
没有
在这种情况下,您的数组元素只能容纳int
s。没有地方存储有关元素<!>“;是否存在<!>”的信息。它已被分配,因此它存在。在Java中,新分配的<=>数组将初始化为所有元素零。
您可以使用 checkstyle , pmd ,以及 findbugs 在您的来源上(findbugs on the二进制)他们会告诉你这样的事情。
不幸的是,它们看起来并不像是遇到了这个特殊的问题(这有理由保证数组的每个成员都设置为0,null或false)。
使用这些工具可以捕获在给定值之前使用的实例和类成员(不是数组)(类似的问题)。
有点死的话题,但我偶然发现它,所以我要放置我的智慧(或其他:P)。您可以使用Arrays.Fill在使用无效值(如-1)创建数组时填充它。然后,您可以轻松地执行if x <!> lt; 0来检查您是否已初始化该特定阵列位置。只是一个想法...
不隶属于 StackOverflow