如何检查数组是否为空/空?

Ank*_*han 120 java arrays

我有int没有元素的数组,我试图检查它是否为空.

例如,为什么下面代码中的if语句永远不会成立?

int[] k = new int[3];

if(k==null)
{
    System.out.println(k.length);
}
Run Code Online (Sandbox Code Playgroud)

cle*_*tus 191

null数组和空数组之间存在关键区别.这是一个测试null.

int arr[] = null;
if (arr == null) {
  System.out.println("array is null");
}
Run Code Online (Sandbox Code Playgroud)

这里的"空"没有官方意义.我选择将empty定义为具有0个元素:

arr = new int[0];
if (arr.length == 0) {
  System.out.println("array is empty");
}
Run Code Online (Sandbox Code Playgroud)

"空"的另一种定义是,如果所有元素都是null:

Object arr[] = new Object[10];
boolean empty = true;
for (int i=0; i<arr.length; i++) {
  if (arr[i] != null) {
    empty = false;
    break;
  }
}
Run Code Online (Sandbox Code Playgroud)

要么

Object arr[] = new Object[10];
boolean empty = true;
for (Object ob : arr) {
  if (ob != null) {
    empty = false;
    break;
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记:org.apache.commons.lang3.ArrayUtils.isEmpty(k) (4认同)

Shr*_*thy 87

ArrayUtils.isNotEmpty(testArrayName)从包中org.apache.commons.lang3确保Array不为null或为空


Mik*_*ike 17

看看它的长度:

int[] i = ...;
if (i.length == 0) { } // no elements in the array
Run Code Online (Sandbox Code Playgroud)

虽然同时检查null更安全:

if (i == null || i.length == 0) { }
Run Code Online (Sandbox Code Playgroud)

  • 如果您需要检查 null 和长度 0,请务必像您所做的那样首先检查 null,以避免可能的空指针错误 (2认同)

Jac*_*bec 14

org.apache.commons.lang 上也存在检查数组是否为空或空的方法:

import org.apache.commons.lang.ArrayUtils;

ArrayUtils.isEmpty(array);
Run Code Online (Sandbox Code Playgroud)