2016-01-18 46 views
6

我想知道這個代碼是否有效檢查數組是否爲空,或者我應該檢查null?如何檢查一個空數組java

if(arrayName={}) 
    System.out.println("array empty"); 
else System.out.println("array not empty"); 

謝謝!

+4

這取決於你的意思是什麼__empty__。 – Nabin

+0

*「我想知道這個代碼對於檢查一個數組是否爲空是有效的」* - 你發佈的代碼甚至不能編譯。將來,只是嘗試編譯你的代碼**可能會更快,而不是讓人們在互聯網上查看它。 – DaoWen

回答

5

在數組類我們已經定義「長度」的靜態變量,它保持在數組對象中numberof元件。你可以用它來尋找長度爲:

if(arrayName.length == 0) 
    System.out.println("array empty"); 
else 
    System.out.println("array not empty"); 
0

不,因爲數組文字不能以這種方式工作。替換arrayName={}arrayName.length==0,它應該工作。

0

要檢查空嘗試這樣的:

if (arr.length == 0) { 
System.out.println("array is empty"); 
} 
+0

這是其他答案的複本。 – ostrichofevil

0

正如在其他的答案poited出來的Arraylength屬性將給出數組的長度。但總是建議在對其進行任何操作之前檢查數組是否爲null,否則如果數組爲null,則將拋出NullPointerException

 if (array != null) { 
      if (array.length == 0) 
       System.out.println("Empty Array Size=0"); 
      else 
       System.out.println("Array Not Empty - Size = " + array.length); 

     } else 
      System.out.println("array is null"); 
    } 
0

proudandhonour的答案是正確的軌道上,但不會爲arrayName所有可能的值,特別是在其arrayName尚未定義,是null這種情況下工作。在這種情況下,代碼:

if(arrayName.length == 0) 
    System.out.println("array empty"); 
else 
    System.out.println("array not empty"); 

將失敗,NullPointerException. TimeTravel的回答正確測試這種情況下,正確處理所有可能的值arrayName。唯一的缺點是他的代碼比需要的更冗長。

Java提供了短路評估的布爾表達式。具體而言,對於xx的所有可能值,的結果是false。因此,在評估布爾運算符&&的第一個操作數時,如果第一個操作數的計算結果爲false,則JVM將忽略第二個操作數。

利用這個,我們可以這樣寫:

if (arrayName != null && arrayName.length > 0) 
    { System.out.println("The array length > 0"); } 
else 
    { System.out.println("The array is null or empty"); } 

也有三元運算符它提供了一種機制內聯IF-THEN-ELSE表達式。這在某些情況下,提高可讀性:

System.out.println((arrayName == null) 
    ? "The arrayName variable is null" 
    : (arrayName.length < 1) 
     ? "The array length is zero" 
     : "The array length is " + String.valueOf(arrayName.length) 
); 
4

我會考慮使用ArrayUtils.is空從這裏http://commons.apache.org/proper/commons-lang/download_lang.cgi

加入阿帕奇共享郎一大優勢是,這將空檢查數組你在乾淨和容易閱讀的方式。

你可以再做:

if (ArrayUtils.isEmpty(arrayName) { 
    System.out.printLn("Array empty"); 
} else { 
    System.out.printLn("Array not empty"); 
}