爲什麼空陣列自動初始化內容?
int alone;
System.out.println(alone);
給出了錯誤,但
int[] arr = new int[1];
System.out.println(arr[0]);
等於0? 當您初始化一個空數組時,它是否會自動將其內容初始化爲0(或null等)?
爲什麼空陣列自動初始化內容?
int alone;
System.out.println(alone);
給出了錯誤,但
int[] arr = new int[1];
System.out.println(arr[0]);
等於0? 當您初始化一個空數組時,它是否會自動將其內容初始化爲0(或null等)?
是的,對於原始類型(布爾和字符除外),它將被默認爲零。如果對象類型將默認爲null
。
This java tutorial may help you。
注意:當woot4Moo回答時,這僅適用於實例變量。如果局部變量,那麼它不會被默認爲任何。
這取決於它在哪裏被聲明(在函數內部的一個類中)。如果它是一個類成員變量,它將被初始化爲默認值。數字類型爲0(float類型爲0.0/double),字符串爲null,布爾值爲false,對象爲null。如果在函數內聲明它,它將在int alone
的情況下保持未初始化。就數組而言,它將始終初始化其中包含的值。
downvote porque? – Woot4Moo
請注意,在使用'new'顯式初始化數組之後,OP詢問數組的*元素*。這與成員變量在聲明中獲取默認值的問題不同。 –
我還在輸入我的評論= p –
這裏涉及到兩個相似的問題。首先請注意,所有變量類型都有一個默認值,這取決於類型。至少有兩次使用這些默認值:1)聲明一個成員變量,2)用new
運算符初始化一個數組。
注意,如果你只是聲明一個本地數組變量而不用new
進行初始化,那麼當你聲明一個簡單的int
變量時,你會得到同樣的錯誤。這是因爲所有的局部變量都必須被初始化。他們沒有得到一個自動默認值。
另一方面,成員變量確實得到一個默認值。同樣,當您使用new
運算符創建數組對象時,數組的元素將被初始化爲適當的默認值。
不正確,布爾值不初始化爲零。 char也不初始化爲零。 – Woot4Moo
@ Woot4Moo:同意更新。 – kosa
實例數組變量與本地數組變量沒有區別,因爲調用'new'時發生此初始化。我不認爲'new'有任何區分實例變量和局部變量的方法。 –