今天我們說一下java里面的數組,數組在編程語言里的意思,相當於離散數學里面的集合,其意義幾乎完全一樣,只有一點區別,離散里有無窮集合,比 如,實數集,但是在java里是不存在無窮集合的。在java里,數組就是一些數據的集合。作為我們這些菜鳥,大多數情況下見到的數組,其中的數據都屬於 同一類型。少數情況下不屬於同一類型,那很有可能發生了多態現象,而且在訪問數組元素的方法時,很可能產生了動態綁定,這些我們以后再說。
好了,讓我們目前先認為數組里的元素都屬於同一類型。那么,怎樣聲明以及初始化一個數組呢?
聲明一個數組有兩種常見的形式:
1. 類型名[] 數組名
2.類型名 數組名[]
讓我們來舉個例子吧,比如我們想聲明一個名字為int_array的整型數組,那么就應該是這樣:int[] int_array,或者這樣:int int_array[]。 同理,String[] sarray 我們就有了一個名為sarray的字符串數組。double[] darray 我們就有了一個名為darray的浮點型數組。有的程序員喜歡第二種聲明方式,而本人則喜歡第一種聲明方式,因為第一種聲明方式明確的告訴了我們那是一個 數組,而且后面緊跟數組名,分的很清楚。況且,第二種方式更像C++,我本人比較不同意程序員把一個程序語言的習慣帶到別的程序語言中,盡管有時候這樣也 不會出現語法錯誤。
有一點需要注意,那就是,聲明了一個數組,僅僅是聲明,你僅僅是有了這么一個名稱而已,你可以認為計算機為你的這個數組開辟了一個新的內存地址,但里面沒 有任何東西。由於沒有初始化,所以你的這個數組現在是徒有其表,如果你在聲明之后,沒有初始化就想馬上使用這個數組,java就會報錯,比如這樣:

我們看到,這個程序無法通過編譯,觀察錯誤信息,是這樣的:variabl a might not have been initialized,就是說,變量a也許還沒有被初始化。我們知道,不是也許,真的就沒有初始化。其實不光是數組,任何一個數據,如果你只是聲明,那 是不能直接使用的。
好了,下面我們來看看,如何初始化一個數組呢?初始化數組常見的有如下方式:
1. 數組名 = new 類型名[數組長度] (此數組已經被聲明過)
數組名 = {數據1, 數據2, 數據3, ......, 數據n} (此數組已經被聲明過)
數組名 = new 類型名[]{數據1, 數據2, 數據3, ......, 數據n} (此數組已經被聲明過)
2. 類型名[] 數組名 = new 類型名[數組長度] (聲明和初始化一起進行)
類型名[] 數組名 = {數據1, 數據2, 數據3, ......, 數據n}(聲明和初始化一起進行)
類型名[] 數組名 = new 類型名[]{數據1, 數據2, 數據3, ......, 數據n}(聲明和初始化一起進行)
3. 類型名 數組名[] = new 類型名[數組長度] (聲明和初始化一起進行)
類型名 數組名[] = {數據1, 數據2, 數據3, ......, 數據n}(聲明和初始化一起進行)
類型名 數組名[] = new 類型名[]{數據1, 數據2, 數據3, ......, 數據n}(聲明和初始化一起進行)
4. 在已經聲明過數組的前提下,使用循環或者其他操作來給數組初始化或者賦值。
總結一下,最后一種,我們暫且不提,而前三種形式,其實就是,初始化數組的時候,等號左邊有三種格式,等號右邊也有三種格式。對於數組來說,最常見的使用 方式是這樣的:類型名[] 數組名 = new 類型名[數組長度],比如說:double[] floatarray = new double[100],這樣我們就聲明並初始化了一個長度為100,名字為floatarray的double型數組。
然而,如果我們以不同的方式初始化一個數組,數組里所含的內容是如何的呢?如果只是給出了數組的長度,而並沒有顯示的給出數組中的數據,那么,如果數組類 型是double,那么里面的數都是0.0,如果數組類型是int,那么里面的數據都是0,如果數組類型是String,那么里面的數據都是null(空 的意思),如果數組類型是boolean,那么里面的數據都是false。但是如果顯示的給出了數據,那么我們不需要給出數組長度,java將自動獲得數 組長度,而且里面的數據也都已經有了,我們看一下下面這段測試的程序:

我們看到,除了最后一個外,其他幾個數組的內容,都有java按照默認方式進行了初始化,看起來似乎最后一種方式更好,但是實際上,最后一種方式並 不常用,因為一般里說,數組在剛開始定義的時候其內容並不確定,往往是需要在程序中動態的進行賦值,所以,讓java給自動賦值,實際上只是走走形式,讓 這個數組能夠使用而已。
好了,今天我們講了數組的聲明以及初始化的基礎知識,以后我們會講數組的操作。希望各位初學者和本菜鳥一起努力練習,共同進步。
