如何在 Java 中檢查一個陣列是否為空
Mohammad Irfan
2023年1月30日
2020年9月19日
本教程介紹瞭如何在 Java 中檢查一個陣列是否為空,還列出了一些示例程式碼來了解空檢查過程。
Java 中的空陣列
在 Java 中,陣列是一個儲存類似型別資料的物件。只有當它沒有被例項化或指向一個空引用時,它才可能是空的。
在這個例子中,我們建立了兩個陣列。陣列 arr
被宣告,但沒有被例項化(賦值)。它不包含任何資料,而是指向一個由編譯器分配的空引用(預設值)。陣列 arr2
被宣告並顯式地分配給 null,以建立一個空陣列。
我們可以用這個例子來檢查陣列是否為空。
public class SimpleTesting {
String[] arr;
String[] arr2 = null;
public static void main(String[] args) {
SimpleTesting obj = new SimpleTesting();
if(obj.arr == null) {
System.out.println("The array is null");
}
if(obj.arr2 == null) {
System.out.println("The array2 is null");
}
}
}
輸出:
The array is null
The array2 is null
陣列包含空值
這是第二種情況,即一個陣列包含空值。在這種情況下,我們可以認為一個陣列是空值。
假設,我們有一個可以包含 5 個元素的字串陣列。由於陣列沒有被初始化,那麼它持有編譯器分配的空值(預設值)。
public class SimpleTesting {
String[] arr = new String[5];
public static void main(String[] args) {
boolean containNull = true;
SimpleTesting obj = new SimpleTesting();
for(int i = 0; i<obj.arr.length; i++) {
if(obj.arr[i] != null) {
containNull = false;
break;
}
}
if(containNull) {
System.out.println("Array is null");
}
}
}
輸出:
Array is null
Java 中的空陣列
只有當一個陣列包含零個元素並且長度為零時,這個陣列才是空的。我們可以使用陣列物件的長度屬性(.length
)來測試它。
public class SimpleTesting {
String[] arr = new String[0];
public static void main(String[] args) {
SimpleTesting obj = new SimpleTesting();
if(obj.arr.length == 0) {
System.out.println("The array is Empty");
}
}
}
輸出:
The array is Empty
在 Java 中使用 Apache Commons 庫檢查陣列空值
如果你正在使用 Apache,那麼使用 ArrayUtils
類來檢查一個陣列是否為空。ArrayUtils
類提供了一個方法 isEmpty()
,它返回一個布林值,可以是 true 或 false。關於 apache 庫的更多資訊訪問這裡。
import org.apache.commons.lang3.ArrayUtils;
public class SimpleTesting {
String[] arr = new String[0];
public static void main(String[] args) {
SimpleTesting obj = new SimpleTesting();
Boolean isEmpty = ArrayUtils.isEmpty(obj.arr);
if(isEmpty) {
System.out.println("Array is Empty");
}
}
}
輸出:
Array is Empty
使用 Java 8 檢查陣列空值
如果你使用的是 Java 8 或更高版本,那麼你可以使用 Arrays 類的 stream()
方法來呼叫 allMatch()
方法來檢查陣列是否包含空值。
當陣列包含空值時,就會出現這種情況。
import java.util.Arrays;
import java.util.Objects;
public class SimpleTesting {
String[] arr = new String[10];
public static void main(String[] args) {
SimpleTesting obj = new SimpleTesting();
Boolean containNull = Arrays.stream(obj.arr).allMatch(Objects::nonNull);
if(!containNull) {
System.out.println("Array is null");
}
}
}
輸出:
Array is null