陣列
在實際應用中,通常有批量的資料需要處理,對于同一型別的批量資料,在程式中再通過定義單個的變數這種方式已經不能解決存盤大批量資料的問題了,因為它既不經濟,也不實際,對于這種型別的問題,Java提供了“陣列(Array)”這種參考資料型別來解決,
認識陣列
什么是陣列
陣列是按照一定順序排列的、用來存盤具有相同資料型別的資料的集合,可以使用共同的名字來參考陣列中存盤的資料,
陣列提供了一種資料分組的便利方法,在陣列中,每一項資料都經過編號,可以通過陣列的下標(即資料項在陣列中的索引值,從0開始,例如,陣列中第一項資料的下標為0,第二項資料的下標為1,第N項資料的下標為(N -1)來方便地訪問,
陣列的特點
在不同的程式設計語言中,一般都提供有陣列這種資料型別,功能和使用方法都很類似,不過Java語言中的陣列有自己的幾個特點:
- Java中的陣列,屬于參考資料型別,陣列的元素可以是基本資料型別,也可以是參考資料型別;
- 陣列元素的個數稱為陣列的長度,陣列長度一旦確定,就不能改變;
- 陣列元素的下標是從0開始的,即第一個元素的下標是0;
- Java不支持多維陣列,但是可以創建陣列的陣列;
- Java中將陣列作為物件處理,陣列物件含有成員變數length,用來表示陣列的長度;
- 創建陣列物件會在記憶體中開辟出一整塊連續的空間,而陣列名中參考的是這塊連續空間的首地址
- 陣列所創建的記憶體空間只能存盤相同型別的資料,
陣列的宣告與創建
宣告一維陣列變數
在創建和使用陣列的程序中,首先要做的就是宣告一個陣列變數,來保存實際的陣列,宣告陣列變數的含義如同宣告一個原始資料型別的變數,要指明陣列將要容納的資料型別及陣列的名字,宣告一維陣列的語法如下:
陣列型別[] 陣列名字; //[ ]可以在名字前面或者后面都可以
陣列型別 陣列名字[];
這兩種陣列變數宣告的方式在作用上是相同的,但通常建議采用第一種方式,它更符合陣列變數的原理,即在陣列名字前面指定陣列可以保存的資料型別,這里使用方括號“[ ]”來代表陣列型別,
創建一維陣列物件
宣告了陣列變數之后,下一步就需要創建一個陣列物件,并將其賦給所宣告的陣列變數,而創建陣列物件,實際上就是在記憶體中分配相應大小的存盤空間給陣列,有兩種方式可以用來創建陣列物件,
//創建陣列的三種方式
int[] arr1= new int[3];// 動態初始化:陣列的初始化和陣列的元素的賦值分開進行
int[] arr2 = new int[] { 1, 2, 3};//靜態初始化:陣列的初始化和陣列的元素的賦值操作同時進行
int[] arr2 = { 1, 2, 3};//不使用new,指定陣列的長度為3,值為1,2,3
使用new運算子來創建陣列物件時,必須指定這個陣列的大小,創建陣列物件時,僅僅是在記憶體中為陣列變數分配指定大小的空間,并沒有實際存盤資料,這時陣列的所有元素會被自動地賦予初值,
也可以通過把陣列元素值直接放在大括號中的辦法來同時完成創建和初始化陣列,這時將在記憶體中分配與元素數量相適應的空間大小,并賦予指定的元素值,使用這種方法創建陣列物件時,大括號里的元素型別必須與指定的資料型別一致,并且陣列的大小與大括號中包含的元素個數相同,
陣列的使用
訪問一維陣列元素
當創建了陣列變數并賦予陣列變數帶有初值的陣列物件以后,就可以訪問一維陣列中的元素了,訪問一維陣列元素,使用該陣列的名字,后跟陣列下標,如以下代碼所示,
String[] studentNames = new String[10];
studentNames[0] = "張三";//訪問陣列中的第一個元素
這里將陣列studentNames的第一個元素studentNames[0]的值設定為字串“張三”,一定要注意,在Java的陣列中,下標是從0開始計數的,所以長度為n的陣列第一個元素的下標為0,最后一個元素的下標為n -1,
修改一維陣列元素
陣列的大小不可改變,但陣列中的元素值是可以改變的,在宣告一個陣列變數和創建一個陣列物件以后,可以通過為陣列中的元素賦值,來修改陣列中任一元素的值,請看下面的代碼,
int englishScore[ ] = new int[3]; //定義一個整型陣列,用來保存三個同學的英語成績
//為三個同學的英語成績賦值
englishScore[0] = 98; //為第一個元素賦值
englishScore[1] = 72; //為第二個元素賦值
englishScore[2] = 65; //為第三個元素賦值
通常陣列的大小會遠遠大于示例中的陣列大小,所以在對陣列進行操作時,一般都使用回圈來重復一個陣列元素,而不需要一個一個單獨地處理,
一維陣列的遍歷
int[] a = new int[]{12, 13, 14};
for (int i = 0; i <= a.length - 1; i++) {
System.out.println(a[i]);
}
多維陣列
陣列元素除了可以是基本資料型別、物件型別之外,還可以是陣列,即陣列的元素是陣列,所以雖然Java不支持多維陣列,但是可以通過宣告陣列的陣列來實作同樣的功能,元素陣列還可以包含陣列,依此類推,最后創建出達到需要的任意維數,
宣告二維陣列變數
在實際應用中,多維陣列中使用最多的是二維陣列,所以這次主要介紹二維陣列的宣告、創建和使用,對于其他多維陣列的宣告、創建和使用,與二維陣列相似,,宣告二維陣列的語法如下,
陣列型別[ ][ ] 陣列名字;
陣列型別 陣列名字[ ][ ];
這兩種陣列變數宣告的方式在作用上是相同的,但通常建議采用第一種方式,與宣告一維陣列類似,
創建二維陣列物件
宣告了陣列變數之后,下一步就需要創建一個陣列物件,并將其賦給所宣告的陣列變數,而創建陣列物件實際上就是在記憶體中分配相應大小的存盤空間給陣列,有兩種方式可以用來創建二維陣列物件,
//1.使用new運算子
int[ ][ ] year = new int[52][7] ;
//2.直接初始化陣列元素
int[][] arrays2={{11,12,13,14,15},{21,22,23,24,25},{31,32,33,34,35}};
使用new運算子來創建二維陣列物件時,必須指定這個陣列的大小,在這個代碼中,創建了一個二維陣列物件,用來保存一年中的52個星期及每個星期的7天,
可以把二維陣列想象成一個二維表格,帶有行和列,其中行與二維陣列的第一維對應,列與二維陣列的第二維對應,
也可以通過把陣列元素值直接放在大括號中的辦法,來同時完成創建和初始化二維陣列,在大括號中使用逗號分隔每個花括號,每個花括號中為用逗號分開的行資料,這時將在記憶體中分配與元素數量相適應的空間大小,并賦予指定的元素值,
訪問二維陣列元素
訪問二維陣列元素,指的是讀取二維陣列中指定位置的元素,要訪問二維陣列元素,需使用該陣列的名字,后面跟兩個中括號代表下標,第一個下標為行索引,第二個下標為列索引,如下代碼所示,
int[][] arrays2={{11,12,13,14,15},{21,22,23,24,25},{31,32,33,34,35}};
System.out.println(arrays2[0][2]);
上述代碼輸出陣列arrays2的第1行(下標為0)第3列(下標為2)的元素,可以看出,應該輸出的值為13,需要注意的是,在二維陣列中,行和列的下標都是從0開始計數的,
修改二維陣列元素
在宣告一個陣列變數和創建一個二維陣列物件以后,也可以通過為陣列中的元素賦值,來修改陣列中任一元素的值,這與修改一維陣列很類似,請看下面的代碼,
int[ ][ ] arrays = {{11,12,13,14,15},{21,22,23,24,25}{31,32,33,34,35}};//定義二維陣列
arraysarrays[0][0] = arrays[1][3] + arrays[2][0]; //將兩個陣列元素相加
System.out.println(arrays[0][0]);//輸出結果為55
在這個示例中,讀取陣列第2行第4列(行和列的下標都是從0開始計算)的元素值24,與陣列第3 行第1 列的元素值31 相加,并將結果55 賦給陣列第一行第一列的元素arrays[0][0],最后輸出arrays[0[0]的值55,通常在對二維陣列進行操作時,一般都使用雙重回圈來處理,
Arrays類
什么是Arrays類
Arrays類是陣列的工具類java.util.Arrays,
由于陣列物件本身并沒有什么方法可以供我們呼叫,但API中提供了一個工具類Arrays供我們使用,從而可以對資料物件進行一些基本的操作,
Arrays類中的方法都是static修飾的靜態方法,在使用的時候可以直接使用類名進行呼叫,而不用使用物件來呼叫,
常用方法
- 查找陣列元素:通過binarySearch方法能對排序好的陣列進行二分法操作,
- 陣列轉字串:Arrays.toString(array)
- 填充陣列: Arrays.fill(array, 1, 4, 2)
- 陣列的比較: Arrays.equals(array, array2)
- 陣列的排序: Arrays.sort(array, 0, 4)
- 陣列的復制: Arrays.copyOf(array, 3)
- 陣列轉List: Arrays.asList(array)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/245026.html
標籤:Java
