1. 程式人生 > 實用技巧 >055 01 Android 零基礎入門 01 Java基礎語法 06 Java一維陣列 02 陣列的概念

055 01 Android 零基礎入門 01 Java基礎語法 06 Java一維陣列 02 陣列的概念

055 01 Android 零基礎入門 01 Java基礎語法 06 Java一維陣列 02 陣列的概念

本文知識點:陣列的概念

陣列的宣告建立、初始化

在學習陣列的宣告建立、初始化前,我們可以和之前的變數的宣告建立、初始化進行對比來學習。
那我們來看一下陣列的宣告,先來看一下語法格式。

陣列的宣告

陣列宣告語法格式1

陣列宣告格式1:

資料型別 [] 陣列名;

變數宣告格式:

資料型別 變數名;

陣列宣告相比變數宣告,在資料型別後增加了一箇中括號。而陣列名的命名規則和變數名的命名規則是一致的。它本身是一個識別符號,要滿足識別符號的命名規則。並且像變數名一樣,如果陣列名是由一個單片語成的,所有字母都是小寫的。如果由多個單片語成的,第一個單詞全部小寫,從第二個單詞開始,首字母全部大寫。

陣列宣告語法格式2

陣列宣告格式2:

資料型別 陣列名 [];

說明一下,為什麼陣列宣告有這兩種形式:
因為其他的程式語言,比如說C語言,C++,大家都是把中括號寫在陣列名的後面(即和我們學習的Java陣列宣告語法格式2相同)。Java為了和其他程式語言進行區分呢,Java就建立了自己的命名方式。就是把中括號寫在資料型別的後面(陣列宣告語法格式1)。那麼,第一種陣列宣告的語法格式才是我們在Java進行陣列宣告的時候,常用的形式。

案例練習如何宣告陣列——使用2種語法格式

宣告一個整型陣列如下:

int [] myIntArray ;
int myIntArray [];

以上兩種宣告方式都是正確的。
當然,如果你要生成其他型別的陣列呢,就把相應的資料型別的名稱進行改變即可。比如我們生成一個char型別的陣列、生成字串String型別的陣列。
記住:字串本身是一個類

。這塊內容後續我們學習面向物件的內容後,就知道了。藉助類可以建立物件,所以String作為一個類,建立String型別的陣列就是物件陣列

以上是陣列的宣告。
然後我們看下陣列的建立。

陣列的建立

陣列建立形式1:

先宣告、後建立
1、先去宣告一個數組
2、再去建立陣列

如何建立呢?陣列建立形式1:

陣列名 = new 資料型別[陣列長度];

new是一個關鍵字,在後面的面向物件程式中呢,我們會遇到很多次new,new關鍵字其實是在建立一個物件。目前我們先知道有這個概念即可。對於陣列問題,我們知道new是在建立陣列即可。

例題:宣告並建立一個長度為10的整型陣列:

int [] arr;//宣告陣列
arr = new int[10];//建立陣列

陣列建立形式2:

宣告陣列的同時建立陣列:
這個類似變數的初始化,但是陣列中不叫初始化,稍後我們對初始化的內容進行演示。
陣列建立形式2:

資料型別 [] 陣列名 = new 資料型別[陣列長度];

注意:
1、建立陣列時,陣列長度必須被指定,如果沒有指定,是錯誤的。
2、宣告時(賦值號=)左邊的中括號寫在陣列名之前、陣列名之後都是正確的。

陣列在記憶體中的儲存

我們前面學習變數的時候學習了:定義一個變數之後,變數就會在記憶體中儲存。同樣地,定義陣列之後,也會在記憶體中分配記憶體空間,用來儲存陣列中的資料。而陣列比較特別的一點是:陣列在記憶體中分配的,肯定是一段連續的記憶體空間

比如,我們定義一個整型的陣列a:

int [] a = new int [5];

a是一個長度為5的整型陣列,會在記憶體中開闢一塊連續的記憶體空間。並且陣列的預設值,對於整型陣列來說,它的預設值都是0。所以我們知道,在這片連續的記憶體空間當中,每個陣列元素的值都為0。就是說,長度為5的陣列,它肯定有5個元素。那麼這5個元素,它的每一個元素的元素值都是0。而我們的陣列名本質是一個物件(陣列是引用資料型別,即類型別,類建立的就是物件),它(陣列名)是指向陣列的第一個元素。這點在後面進行方法傳值的時候是非常重要的。

這是陣列的儲存形式,需要注意的是:
陣列的陣列元素都有預設的元素值。後面我們會學習,其他資料型別建立的陣列的陣列元素的預設值都是什麼!

這裡,我們在強調一點,即區域性變數。區域性變數(在主方法中、在迴圈中我們學習的)都是沒有預設值的。我們之前遇到過類似的問題,我們需要給區域性變數進行賦值的。但是陣列是有預設值的。因為陣列的本質是物件

陣列的初始化

初始化的定義:宣告的同時給變數賦值
我們前面看到的new 資料型別[陣列長度]; 不叫初始化,而叫做建立物件。

注意:
1、元素之間用逗號分隔(英文逗號)
2、整個程式碼書寫都必須是在英文輸入法狀態之下的 否則,會報錯。
上面的問題也是初學者經常會犯的錯誤。

那麼陣列長度是什麼呢?陣列長度:陣列初始化時所給元素的個數,即為陣列長度
比如上面的例子中:

int [] arr = {1,2,3,4,5,6,7,8,9,10};

從1到10共計10個元素,那麼陣列長度就是10。

接下來,我們再看一下陣列元素的引用

陣列元素的引用

前面提到過了,總說定義長度為10的陣列,那麼對於陣列當中的每一個元素是如何進行表示的呢?
我們來看一下語法格式:

陣列名[陣列元素下標]

這裡面,注意一下,陣列元素下標是整型的數字,並且陣列元素下標是從0開始的,其實整個“陣列名[陣列元素下標]“ 這樣一個整體, 我們可以把這個整體看做是一個變數名

我們看一下陣列元素的引用的一個圖例。

int [] a = {1,2,3,4,5,6,7,8,9,10};

10個元素對應10個連續的記憶體空間中。注意:陣列一定是存放在連續的記憶體空間中。

我們把:
第1個元素表示為a[0], 注意,陣列下標從0開始。
第2個元素表示為a[1]
第3個元素表示為a[2]
……
第10個元素表示為a[9]

這就類似變數和變數值之間的對應關係。比如,我們定義一個變數n:

int n = 10;

那麼,n是變數名,10是變數值。同樣的,a[0]表示陣列a給1個位置處的陣列元素起的名字,所以,我們說可以把a[0]這個整體看做一個變數名。而它所對應的值就是1。

陣列元素引用的問題中,始終要記得:陣列元素下標是從0開始。重要的事我已經說了三遍,不行你回顧文章數一數。

陣列的長度

上面陣列初始化的時候提過,陣列長度就是陣列元素的個數
在陣列中,還有一個屬性 ,叫做length。length屬性是表示陣列長度的。如何使用屬性呢?
使用格式:

陣列名.length

使用方法類似我們前面從鍵盤接收資料時用到的sc.nextInt(); nextInt()有括號,而length屬性沒有括號。因為nextInt()是方法,需要括號。而length是屬性,不需要括號。這些後面面向物件的知識會涉及到,現在有個瞭解就好了。(其實都是引用資料型別,物件引用屬性或者物件飲用方法的形式)

Scanner sc = new Scanner(System.in);
sc.nextInt();