Java程式設計基礎(9)
Java程式設計基礎- Java陣列-針對陣列(Array)的各種操作:
陣列是最常見的一種資料結構,它是相同型別的用一個識別符號封裝到一起的基本型別資料序列或者物件序列。陣列使用一個統一的陣列名和不同的下標來唯一確定陣列中的元素。實質上,陣列是一個簡單的線性序列,因此訪問速度很快。
1.Java陣列簡介:陣列是什麼?
在某些情況下,雖然可以使用單個變數來儲存資訊,但是如果需要儲存的資訊較多(例如儲存 50 件商品的價格),這時再依次建立變數宣告並賦值顯得非常麻煩。隨著處理的資訊量越來越大,工作也就越來越煩瑣,這時可以使用陣列或集合來儲存資訊。
陣列用來儲存一系列的資料項,其中的每一項具有相同的基本資料型別、類或相同的父類。通過使用陣列,可以在很大程度上縮短和簡化程式程式碼,從而提高應用程式的效率。
陣列是一種最簡單的複合資料型別,它是有序資料的集合,陣列中的每個元素具有相同的資料型別,可以用一個統一的陣列名和不同的下標來唯一確定陣列中的元素。根據陣列的維度,可以將其分為一維陣列、二維陣列和多維陣列等。
總的來說,陣列具有以下特點:
陣列可以是一維陣列、二維陣列或多維陣列。
數值陣列元素的預設值為 0,而引用元素的預設值為 null。
交錯陣列是陣列的陣列,因此,它的元素是引用型別,初始化為 null。交錯陣列元素的維度和大小可以不同。
陣列的索引從 0 開始,如果陣列有 n 個元素,那麼陣列的索引是從 0 到(n-1)。
陣列元素可以是任何型別,包括陣列型別。
陣列型別是從抽象基類 Array 派生的引用型別。
2.Java一維陣列詳解:Java建立一維陣列、初始化一維陣列、獲取單個/全部元素
一維陣列實質上是一組相同型別資料的線性集合,是陣列中最簡單的一種陣列。本文將重點介紹一維陣列的建立、初始化和使用。
建立一維陣列
為了在程式中使用一個數組,必須宣告一個引用該陣列的變數,並指明整個變數可以引用的陣列型別。宣告一維陣列的語法格式為:
資料型別陣列名[]; //宣告陣列
或者
資料型別[]陣列名; //宣告陣列
以上兩種格式都可以宣告一個數組,其中的資料型別既可以是基本資料型別,也可以是引用資料型別。陣列名可以是任意合法的變數名。宣告陣列就是要告訴計算機該陣列中資料的型別是什麼。例如:
int[]score;//儲存學生的成績,型別為整型
double[]price;//儲存商品的價格,型別為浮點型
String[]name;//儲存商品名稱,型別為字串型
在宣告陣列時不需要規定陣列的長度,例如:
intscore[10];//這是錯誤的
注意:在宣告陣列變數時千萬不要漏寫[]。
分配空間
聲明瞭陣列,只是得到了一個存放陣列的變數,並沒有為陣列元素分配記憶體空間,不能使用。因此要為陣列分配記憶體空間,這樣陣列的每一個元素才有一個空間進行儲存。
簡單地說,分配空間就是要告訴計算機在記憶體中為它分配幾個連續的位置來儲存資料。在 Java 中可以使用 new 關鍵字來給陣列分配空間。分配空間的語法格式如下:
陣列名=new 資料型別[陣列長度]; //分配空間
其中,陣列長度就是陣列中能存放的元素個數,顯然應該為大於 0 的整數,例如:
score=newint[10];
price=newdouble[30];
name=newString[20];
這裡的 score 是已經宣告過的 int[] 型別的變數,當然也可以在宣告陣列時就給它分配空間,語法格式如下:
資料型別[]陣列名=new 資料型別[陣列長度];
例 1
例如,宣告並分配一個長度為 5 的 int 型別陣列 arr,程式碼如下:
intarr=newint[5];
執行後 arr 陣列在記憶體中的格式如圖 1 所示。

圖1 一維陣列的記憶體格式
在圖 1 中 arr 為陣列名稱,方括號“[]”中的值為陣列的下標。陣列通過下標來區分陣列中不同的元素,並且下標是從 0 開始的。因此這裡包含 5 個元素的 arr 陣列最大下標為 4。
注意:一旦聲明瞭陣列的大小,就不能再修改。這裡的陣列長度也是必需的,不能少。
儘管陣列可以儲存一組基本資料型別的元素,但是陣列整體屬於引用資料型別。當宣告一個數組變數時,其實是建立了一個型別為“資料型別[]”(如 int[]、double[], String[])的陣列物件,它具有表 1 所示的方法和屬性。
表1 陣列的方法和屬性
方法名稱返回值
clone()Object
equals(Object obj)boolean
getClass()Class<?>
hashCode()int
notify()void
notify All()void
toString()String
wait()void
wait(long timeout)void
wait(long timeout,int nanos)void
屬性lengthint
初始化一維陣列
陣列可以進行初始化操作,在初始化陣列的同時,可以指定陣列的大小,也可以分別初始化陣列中的每一個元素。在 Java 語言中,初始化陣列有以下 3 種方式。
使用 new 指定陣列大小後進行初始化
使用 new 關鍵字建立陣列,在建立時指定陣列的大小。語法如下:
type[] array=new int[size];
建立陣列之後,元素的值並不確定,需要為每一個數組的元素進行賦值,其下標從 0 開始。
例 2
建立包含 5 個元素的 int 型別的陣列,然後分別將元素的值設定為 1、2、3、5 和 8。程式碼如下:
int[]number=newint[5];
number[0]=1;
number[1]=2;
number[2]=3;
number[3]=5;
number[4]=8;
注意:使用 new 建立陣列之後,它還只是一個引用,直接將值賦給引用,初始化過程才算結束。
使用 new 指定陣列元素的值
使用上述方式初始化陣列時,只有在為元素賦值時才確定值。可以不使用上述方式,而是在初始化時就已經確定值。語法如下:
type[] array=new type[]{值 1,值 2,值 3,值 4,• • •,值 n};
例 3
更改例 2 中的程式碼,使用 new 直接指定陣列元素的值。程式碼如下:
int[]number=newint[]{1,2,3,5,8};
上述程式碼的效果等價於例 2 的效果。
直接指定陣列元素的值
在上述兩種方式的語法中,type 可以省略,如果已經宣告陣列變數,那麼直接使用這兩種方式進行初始化。如果不想使用上述兩種方式,那麼可以不使用 new 直接指定陣列元素的值。語法如下:
type[] array={值 1,值 2,值 3,值 值 n};
例 4
在前面例子的基礎上更改程式碼,直接使用上述語法實現 number 陣列的初始化。程式碼如下:
int[]number={1,2,3,5,8};
使用這種方式時,陣列的宣告和初始化操作要同步,即不能省略陣列變數的型別。如下的程式碼就是錯誤的:
int[]number;
number={1,2,3,5,8};
獲取單個元素
獲取單個元素是指獲取陣列中的一個元素,如第一個元素或最後一個元素。獲取單個元素的方法非常簡單,指定元素所在陣列的下標即可。語法如下:
array[index];
其中,array 表示陣列變數,index 表示下標,下標為 0 表示獲取第一個元素,下標為 array.length-1 表示獲取最後一個元素。當指定的下標值超出陣列的總長度時,會丟擲 ArraylndexOutOfBoundsException 異常。
例 5
獲取 number 陣列中的第一個元素和最後一個元素,並將元素的值輸出。程式碼如下:
int[]number={1,2,3,5,8};
System.out.println("獲取第一個元素:"+number[0]);
System.out.println("獲取最後一個元素:"+number[number.length-1]);
執行上述程式碼,輸出結果如下所示:
獲取第一個元素:1
獲取最後一個元素:8
獲取全部元素
當陣列中的元素數量不多時,要獲取陣列中的全部元素,可以使用下標逐個獲取元素。但是,如果陣列中的元素過多,再使用單個下標則顯得煩瑣,此時使用一種簡單的方法可以獲取全部元素——使用迴圈語句。
下面利用 for 迴圈語句遍歷 number 陣列中的全部元素,並將元素的值輸出。程式碼如下:
int[]number={1,2,3,5,8};
for(inti=0;i<number.length;i++)
{
System.out.println("第"+(i+1)+"個元素的值是:"+number[i]);
}
除了使用 for 語句,還可以使用 foreach 遍歷陣列中的元素,並將元素的值輸出。程式碼如下:
for(intval:number)
{
System.out.print("元素的值依次是:"+val+"\t");
}