簡介
數組可用用於儲存存儲多個數據,Java的數組要求所有的數組元素具有相同的數據類型。一旦數組初始化完成,數組在記憶體中的空間被固定下來,長度無法改變,即使把數組的元素清空,所佔用的空間仍然被保留。
生活案例:博物架
每一個物品架都是相同類型的物品,長度不變,即使把物品下架,物品架依然不會改變。
定義數組
使用數組4步走:
1、聲明數組
Java中支援兩種格式的數組定義格式:
1、聲明數組Java中支援兩種格式的數組定義格式:型態 變數名稱[];
例:
int[] a;int b[]; //兩種方法都行,但建議使用第一種。
聲明數組也就相當於上面例子中購買了一個定制的物品架(數組)到博物館中,但是還沒有確定物品架的大小(數組的大小),也還沒有往物品架上放東西(數組元素)。
2、分配空間
分配空間也就是對陣列進行初始化,初始化分為兩種方式:
第一種:靜態初始化
靜態初始化的語法格式如下:
資料型別[] 變數名稱=靜態初始化的語法格式如下:
資料型別[] 變數名稱=靜態初始化的語法格式如下:
資料類型[ new 資料型別[]{資料1,資料2,資料3,......};
例:
int[] a = new int[]{4,2,64,12,3}; //將這些數字存放在數組中,數組的大小(長度)為花括號中元素的數量,該例子中大小為5String[] b = new String[]{"張三", "李四", "王五"}; //所有資料的型別必須為定義的資料型態int[] c = {2,5,7}; //也可以使用這樣的簡寫方式
這如同購買一個客製化的物品架回來,同時將展示品放到物品架中一起購買回來,而物品架的大小就有多少物品就有多大。
第二種:動態初始化
動態初始化是只指定陣列的大小,由系統為每個元素指定初始值得一種方式。語法格式如下:
資料型別[] 變數名稱= new 資料型別[大小];
在這個格式中, 需要為其指定整數型別的陣列大小,指定後,將決定資料的長度,陣列能夠存放多少元素。同時為所有元素指定一個預設初始值。
例:
int[] a = new int[5]; //定義一個數組,長度為5,也就是說,能夠存放5個int類型的數據,同時,預設5個值初始化為0
初始化時預設值依下列規定設定:
byte,short,int、long預設為0;
float、double預設為0.0;
char
其他引用類型預設為null;
3、賦值
儘管你已經初始化好了數組,但是我們還是可以透過賦值的方式改變裡面的資料。那麼已經初始化了數組,確定了數組的大小,我們該如何為沒一個數組元素賦值呢?
數組中還有一個下標的概念,數組初始化的時候,會為每個元素分配一個下標,就和物品展示架上的編號一樣,我們可以透過下標為每個元素重新賦值。
數組的下標從0開始,也就是說,第一個元素的下標為0,至於為什麼要從0開始,我們後面再探討一下,我們先看看賦值的例子:
int[] a = new int[3]; //定義一個長度為3的int型別數組,裡面3個元素值已預設為0;a[0] = 4; //設定第一個元素值為4a[1] = 5; //設定第二個元素值為5a[2] = 7; //設定第三個元素值為7為什麼陣列下標是從0開始?
🎜首先我們需要知道的是,程式是在電腦記憶體中運行的,當我們的程式開始處理數據時,會在記憶體中開闢一個小小的空間用來儲存數據,在程式碼中也就是定義一個變量,如:🎜🎜int a = 5;🎜
定義一個int型別變量,值為五,而在內存中表示為,在內存中分配一小塊內存,命名為a,裡面存的值為5。
而我們是如透過a這樣一個變數名稱得到記憶體中的值得呢?是因為每一小塊記憶體都會有一個地址,就如同我們居住的家有一個地址一樣,透過這個地址,透過這個地址,就能知道裡面住的是誰。
二數組在記憶體中是以相連的位置儲存的,方便對陣列的操作,我們看一個例子:
int[] b = new int[3]; //定義一個int型別的陣列,長度為3,裡面的元素預設值為0
此時記憶體中是這樣的:
數組中取得資料也是如此,如何知道b數組每個元素的資料呢?首先我們知道透過b這個數組在記憶體中的哪個位置,因為數組在記憶體中是一個相連的記憶體空間,所以b[0]的位置就等於b+0,而b[1]的位置就為b+ 1,b[2]=b+2,......以此類推,知道了數組所有元素的位置。而數組中第一個元素正好是在數組中開頭的位置,用b[0]表示,則剛好是b表示的位置,而用1表示第一個元素的位置,則需要表示為a+1- 1。
4、處理資料
在前面的內容中,我們已經定義了數組,初始化了數組,賦了值,那麼如何使用資料呢,其實前面已經分析過,我們透過數組下標來為數組賦值,也透過數組下標得到每個數組元素的值。
int[] a = new int[3]; a[0] = 3; a[1] = 4; a[2] = 5; System.out.println(a[1]); //得到數組的第二個位置的值,將它輸出//我們也可以透過循環遍歷數組中每個元素for(int i = 0; i
在上面的例子中,循環印製的時候,我們看到,使用了a.length,透過數組變數名.length 可以得到數組的長度,所以上面我們透過a.length得到數組的長度為3,循環3次,印出數組的元素。
不應該存取不存在的下標
上面我們知道,我們控制數組是透過變數名稱[下標] 來為變數賦值或是得到值,而如果存取超過了數組長度的下標時,則會出現異常。
int[] a = new int[2]; a[5] = 2; //a數組長度只有2個長度,而我們透過下標5存取第6個元素,實際a數組不存在這個位置,則會出現異常。
二維數組或多維數組
上面我們講的都是在數組中儲存一個基本資料型別或引用資料型,而我們也可以在數組中儲存數組
我們在一個陣列元素中儲存了另外一個陣列元素,裡面那個陣列儲存了一種資料型別int的值,我們稱這樣的陣列為二維陣列。
二維陣列的定義,初始化與賦值
而三維數組就是數組裡面的數組裡面存放的是數組~~~~~以此類推可以有n多維數組,不過一般人使用的不多 ~~~^_^~~~
以上就是[Java入門筆記]Java語言基礎(五):陣列的內容,更多相關內容請關注PHP中文網(www.php.cn)!