定義:在Java中,數組是具有相同資料類型的有序資料的集合,它是一個對象。數組中的每個資料稱為數組元素,通過下標訪問。數組分為一維數組和多維陣列。
一維數組的聲明:聲明一個數組僅指定了數組名和元素的資料類型,並未指定數組元素的個數和初始值,此時系統不會為數組分配記憶體空間。一維數組的聲明格式如下:
資料類型[] 數組名; 或者 資料類型 數組名[];
一維數組的初始化:數組聲明後需要初始化才可以使用,通過初始化可以為數組分配記憶體空間,或者為數組元素賦值。數組的初始化分為靜態初始化和動態初始化。
(1)靜態初始化:聲明數組的同時為數組元素賦值。無需指定數組的大小,系統會根據元素的個數自動算出數組長度,並分配記憶體空間。適用於元素個數不多或可列舉的情況。文法格式如下:
資料類型[] 數組名 = {元素1初值, 元素2初值, 元素3初值...};
(2)動態初始化:指利用new運算子為數組分配記憶體空間。此時數組的聲明和初始化時分開進行的。常用於數組元素較多或無法列舉的情況。文法格式如下:
資料類型[] 數組名;
數組名 = new 資料類型[數組長度]; 也可寫成一句:資料類型[] 數組名=new 資料類型[數組長度];
一維數組的使用:數組名[數組下標];
(1)數組下標用來唯一標識數組中的每一個元素,可以是整數或運算式。Java中所有數組下標都是從0開始到“數組長度-1”結束。
(2)數組對象有length屬性工作表示數組長度。
二維數組聲明:資料類型[][] 數組名; 或 資料類型 數組名[][];
二維數組的初始化:靜態初始化和動態初始化
(1)靜態初始化:在聲明數組的同時給元素賦初值。例如:
int a[][] = {{12},{54,63},{123,456}};
二維數組也可以看做是一維數組的數組,如上述例子,數組a是由3個長度不同的一維數組組成的二維數組。
(2)動態初始化:用new關鍵字為數組分配記憶體空間,指定數組元素的行數和列數,但不給數組賦初值。二維數組的動態初始化有兩種方式:
a.直接方式:在初始化時直接指定行數和列數,適用於數組的每行的列數都相同的情況。例如:
int a[][] = new int[3][2];
b.逐級方式:首先為二維數組分配行數,再為每一行分配列數。例如:
int a[][] = new int[2][]; //定義一個兩行的二維數組
a[0] = new int[1]; //定義第一行a[0]為1個元素
a[1] = new int[2]; //定義第二行a[1]為2個元素
二維數組的使用:二維數組的使用方法與一維數組使用方法相似,都是用下標標識數組中的每一個元素。每一維的下標也是從0開始。文法格式為:數組名[數組下標1][數組下標2];
對象數組:數組元素的類型為類對象的數組稱為對象數組。對象數組的定義與基本類型數組的定義在形式上是一致的。
(1)定義對象數組時,只是建立了數組對象引用,並未對對象元素初始化,也為給對象數組分配記憶體空間,因此在定義對象數組後,還要對其初始化。
(2)對象數組中的每個元素都是一個對象,因此可以使用運算子"."訪問對象中的成員。
數組作為方法的參數:在Java中,數組可以作為方法的參數傳遞。數組作為方法的參數時傳遞的是引用,因此實參和形參擁有相同的記憶體空間。若在方法中更改了形參的值,實參的值也將被改變。
(1)數組作為形參時,數組名後的括弧不能省略,括弧的個數和數組的維數相等,不需要給出數組元素的個數。
(2)數組作為實參時,數組名後的括弧要省略。
(3)數組元素也可以作為方法的參數傳遞,此時傳遞的是數值,在形參中更改形參的值,實參的值不會被更改。