【问题标题】:How can I see if an element in an int array is empty?如何查看 int 数组中的元素是否为空?
【发布时间】:2010-09-22 02:50:29
【问题描述】:

示例:

我想看看array[5]是否有值或为空。

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    原始数组中的元素不能为空。它们总是会被初始化为某些东西(通常是 0 用于 int 数组,但取决于您声明数组的方式)。

    如果你这样声明数组(例如):

    int [] myArray ;
    myArray = new int[7] ;
    

    那么所有元素将默认为0

    声明数组的另一种语法是

    int[] myArray = { 12, 7, 32, 15, 113, 0, 7 };
    

    其中数组的初始值(在本例中为 7)在花括号 {} 中给出。

    【讨论】:

    • 顺便说一句,我相信(虽然我不是 100% 相信) int[] myArray = new int[] {12, 7, 32, 15, 113, 0, 7} ;也是允许的。也就是说,我相信您可以(尽管您不必)将 new int[] 放在您创建的数组前面。
    • @MetroidFan2002:是的,该语法也是有效的。
    • 如果你想要 Null 值,你应该将它声明为 Integer [] 数组。使用 int[] 的问题在于,您无法区分分配 0 值的人与默认值之间的区别。如果这没问题,那么您可以使用原语。如果您需要知道差异,则必须使用 Integer。
    【解决方案2】:

    创建一个常量来定义空值,例如:

    private static final int EMPTY = -1;
    

    然后像这样创建数组:

    int[] myArray = new int[size];
    Arrays.fill(myArray, EMPTY);
    

    然后要检查元素是否为“空”,请执行以下操作:

    if (myArray[i] == EMPTY)
    {
       //element i is empty
    }
    

    【讨论】:

    • 很难想出一个可以保证永远不会是可以合法放入数组中的有效值的常量。如果您真的必须知道是否添加了任何内容,最好使用整数数组并检查是否为空。
    • 是的,这是一个公平的观点,但我发现在实践中通常会有一系列有效整数将添加到数组中,例如,一个负整数或 Integer.MAX/MIN_VALUE,可以用作 EMPTY。
    【解决方案3】:

    原始数组(int、float、char 等)永远不会“空”(我假设您的意思是“null”),因为原始数组元素永远不会为 null。

    默认情况下,int 数组在分配时通常包含 0。但是,我从不依赖这个(我猜花了太多时间编写 C 代码)。

    一种方法是选择一个您希望视为“未初始化”的值。它可以是 0 或 -1,或您不会用作有效值的其他值。分配后将数组初始化为该值。

    对象数组(String[] 和任何扩展 Object 的对象数组),可以有空元素,因此您可以创建一个 Integer[] 数组并将其初始化为空值。我想我更喜欢这个想法,而不是使用上面描述的魔法值。

    【讨论】:

    • int 将始终默认为 0,这是在 Java 语言规范中定义的
    【解决方案4】:

    Java 数组中不存在“空”元素。如果数组的长度至少为 6,则元素 5 存在并且它有一个值。如果您没有为该位置分配任何其他内容,那么它将具有零值,就像对象的未初始化字段一样。

    如果是Object后代的数组,则可以检查元素是否等于null

    【讨论】:

    • 如果没有分配任何内容,那么元素 5 中存储的内容是什么?
    • 整数默认初始化为0。
    • 它取决于阵列的组件类型。对于所有数字基元,它是 0。对于 char,它是 ascii 代码 0(又名空字符)。对于字节,它的字节值是 0。对于布尔值,它会是假的。对于任何非原始(即对象),它都是空的。
    【解决方案5】:

    您必须定义空的含义。根据数组的数据类型,您可以决定空的语义。例如,如果您有一个整数数组,您可以确定 0 为空。或者,如果数组是引用类型,那么您可以决定 null 为空。然后你只需通过比较 array[5] == null 或 array[5] == 0 等来检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-20
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      相关资源
      最近更新 更多