幾乎所有的程序設計語言都支持數組。Java也不例外。當我們需要多個類型相同的變量的時候,就考慮定義一個數組。在Java中,數組變量是引用類型的變量,同時因為Java是典型的靜態語言,因此它的數組也是靜態的,所以想要使用就必須先初始化(為數組對象的元素分配空間)。
對於Java數組的初始化,有以下兩種方式,這也是面試中經常考到的經典題目:
1 //只是指定初始值,並沒有指定數組的長度,但是系統為自動決定該數組的長度為4 2 String[] computers = {"Dell", "Lenovo", "Apple", "Acer"}; //① 3 //只是指定初始值,並沒有指定數組的長度,但是系統為自動決定該數組的長度為3 4 String[] names = new String[]{"多啦A夢", "大雄", "靜香"}; //②
1 //只是指定了數組的長度,並沒有顯示的為數組指定初始值,但是系統會默認給數組數組元素分配初始值為null 2 String[] cars = new String[4]; //③
前面提到,因為Java數組變量是引用類型的變量,所以上述幾行初始化語句執行後,三個數組在內存中的分配情況如下圖所示:
由上圖可知,靜態初始化方式,程序員雖然沒有指定數組長度,但是系統已經自動幫我們給分配了,而動態初始化方式,程序員雖然沒有顯示的指定初始化值,但是因為Java數組是引用類型的變量,所以系統也為每個元素分配了初始化值null,當然不同類型的初始化值也是不一樣的,假設是基本類型int類型,那麼為系統分配的初始化值也是對應的默認值0。
對於多維數組,假設有這麼一段代碼:
1 int[][] nums = new int[2][2];2 nums[0][1] = 2;
那麼他在內存中的分配情況如下:
由上圖可知,並沒有真正的多維數組,它的本質其實是一維數組。