java中陣列為空和陣列長度為0的區別

2021-06-23 09:06:44 字數 735 閱讀 2509

兩者如果在一句**中,則要先判斷是否為空,否則可能會出現空指標異常。

eg:if (array == null || 0 == array.length)   // 這種寫法正確,因為執行到 「0 == array.length」則說明陣列不為空,不會產生空指標異常。

if (0 == array.length || 

array == null

) // 這種寫法可能會產生空指標異常。 例:

int n;        //只宣告了一陣列變數;                              

int nil = null;        //宣告一陣列變數,並賦值 null,nil是乙個陣列型別的空引用,不指向任何物件;

int zero = new int[0];  //宣告並建立一陣列物件,長度是0;

對於上面三條語句,乙個比乙個做的動作多,系統占用也是後面的多:

語句一變數還沒初始化,列印 n 會出錯:「可能尚未初始化變數 n」;

語句二雖已初始化,列印「nil.length」會出現異常:nullpointerexception;

語句三列印「nil.length」是0,陣列內還沒有元素。

假設乙個方法返回乙個陣列,如果它返回null,則呼叫方法必須先判斷是否返回null,才能對放回陣列進一步處理,而如果返回空陣列,則無須null引用檢查。鑑於此,返回陣列的方法在沒有結果時我們通常返回空陣列,而不是null,這樣做對於函式呼叫者的處理比較方便。

線性表長度和陣列長度

陣列的長度是指存放線性表的儲存空間的長度,儲存分配後這個量一般是不變的。有個別同學可能會問,陣列的大小一定不可以變的嗎?我怎麼看到有書中談到可以動態分配的一維陣列。是的,一般高階語言,比如c,vb,c 都可以用程式設計手段實現動態記憶體分配陣列,不過著會帶來效能上的 損耗。線性表的長度是線性表中元素...

和為aim的最長子陣列長度

求在給定的陣列中,子陣列中所有數加起來的和等於固定值 aim 的最長子陣列長度。準備乙個字典,key是從 1 位置到當前位置的累加和,value 是第一次得到這個累加和的位置。預設 1 位置的累加和是0.從頭開始遍歷陣列,每次都計算從 1 位置到當前位置的累加和是多少,並將位置資訊和 累加和存到字典...

和為k的最大子陣列長度(字首和)

給定乙個陣列arr,該陣列無序,每乙個元素均為正數,在給定乙個正整數k,求arr的所有子陣列中所有元素相加和為k的最長子陣列的長度 例如 arr 1,2,1,1,1 k 3,累加和為3的最長子陣列為 1,1,1 所以返回結果3 求最長子陣列和,我們可以想到使用字首和,字首和陣列的兩個下標之間的差值就...