首页 > 解决方案 > 如何检查数组是否为空或数组内容是否为空

问题描述

null检查数组是否为值或数组内容是否null组合在 Java 6 中的 1 条语句中的最佳方法是什么:

if ((myArray[0] != null) || (myArray[1] != null) || (myArray!= null)) {
    ...
}

标签: javaarraysnullpointerexception

解决方案


首先,检查数组是否不是null自身。如果数组是null,则没有理由迭代其元素,因为 Java 将NullPointerException在访问它时抛出 :

if (myArray != null) {
    // ...
}

然后在条件主体内遍历其所有元素并检查其中一个是否为null.

boolean hasNull = false;
for (int i=0; i<myArray.length; i++) {
    if (myArray[i] == null) {
        hasNull = true;
        break; // to terminate the iteration since there is no need to iterate more
    } 
}

这个单行解决方案(感谢@Napstablook 的警告)。该条件被评估为true好像数组本身是null或其元素之一是null

if !(myArray != null && myArray[0] != null && myArray[1] != null) { ... }

请注意,&&运算符的工作原理是,如果左侧被评估为false,它将停止评估条件的其余部分,因为它不会影响结果。同样的,||但使用true. 但是,我建议您避免使用此解决方案,因为索引可能会溢出。最好使用for-loop上面提到的。


推荐阅读