【发布时间】:2010-09-22 02:50:29
【问题描述】:
示例:
我想看看array[5]是否有值或为空。
【问题讨论】:
示例:
我想看看array[5]是否有值或为空。
【问题讨论】:
原始数组中的元素不能为空。它们总是会被初始化为某些东西(通常是 0 用于 int 数组,但取决于您声明数组的方式)。
如果你这样声明数组(例如):
int [] myArray ;
myArray = new int[7] ;
那么所有元素将默认为0。
声明数组的另一种语法是
int[] myArray = { 12, 7, 32, 15, 113, 0, 7 };
其中数组的初始值(在本例中为 7)在花括号 {} 中给出。
【讨论】:
创建一个常量来定义空值,例如:
private static final int EMPTY = -1;
然后像这样创建数组:
int[] myArray = new int[size];
Arrays.fill(myArray, EMPTY);
然后要检查元素是否为“空”,请执行以下操作:
if (myArray[i] == EMPTY)
{
//element i is empty
}
【讨论】:
原始数组(int、float、char 等)永远不会“空”(我假设您的意思是“null”),因为原始数组元素永远不会为 null。
默认情况下,int 数组在分配时通常包含 0。但是,我从不依赖这个(我猜花了太多时间编写 C 代码)。
一种方法是选择一个您希望视为“未初始化”的值。它可以是 0 或 -1,或您不会用作有效值的其他值。分配后将数组初始化为该值。
对象数组(String[] 和任何扩展 Object 的对象数组),可以有空元素,因此您可以创建一个 Integer[] 数组并将其初始化为空值。我想我更喜欢这个想法,而不是使用上面描述的魔法值。
【讨论】:
Java 数组中不存在“空”元素。如果数组的长度至少为 6,则元素 5 存在并且它有一个值。如果您没有为该位置分配任何其他内容,那么它将具有零值,就像对象的未初始化字段一样。
如果是Object后代的数组,则可以检查元素是否等于null。
【讨论】:
您必须定义空的含义。根据数组的数据类型,您可以决定空的语义。例如,如果您有一个整数数组,您可以确定 0 为空。或者,如果数组是引用类型,那么您可以决定 null 为空。然后你只需通过比较 array[5] == null 或 array[5] == 0 等来检查。
【讨论】: