Java提供了一種叫作陣列的資料結構,它是一種用來存盤相同型別元素的固定大小順序集合, 陣列用于存盤資料集合,但也可以將陣列視為相同型別的變數集合,
宣告一個陣列變數(如:numbers)并使用numbers[0],numbers[1]和...,numbers[99]來表示單個變數,例如number0,number1,...和number99,而不是單獨地宣告各個變數,
本教程介紹如何宣告陣列變數,創建陣列和索引訪問陣列,
1. 宣告陣列變數
要在程式中使用陣列,需要先宣告一個變數以參考該陣列,并且要指定該變數的陣列型別, 以下是宣告陣列變數的語法 -
語法
dataType[] arrayRefVar; // 推薦方式, // 或者 dataType arrayRefVar[]; // 有效,但不是推薦方式,
注 - 格式:
dataType [] arrayRefVar是推薦方式, 格式:dataType arrayRefVar []來自C/C++語言,可在Java中采用以適應C/C++程式員,
示例
以下代碼片段是此語法的示例 -
double[] myList; // 推薦方式, // 或者 double myList[]; // 有效,但不是推薦方式,
2. 創建陣列
可以使用new運算子來創建陣列,如以下語法 -
// 宣告 dataType[] arrayRefVar; // 推薦方式, // 創建 arrayRefVar = new dataType[arraySize];
上面陳述句做了兩件事 -
- 它使用
new dataType[arraySize]來創建了一個陣列, - 它將新創建的陣列的參考分配給變數
arrayRefVar,
宣告一個陣列變數,創建一個陣列,并將該陣列的參考分配給變數,可以在一個陳述句中完成,如下所示 -
dataType[] arrayRefVar = new dataType[arraySize];
或者,可以按如下方式創建陣列 -
dataType[] arrayRefVar = {value0, value1, ..., valuek};
通過索引訪問陣列元素, 陣列索引值從0開始; 也就是說,它們從0開始到arrayRefVar.length - 1,
示例
下面陳述句中宣告了一個陣列變數myList,它創建了一個包含10個double型別元素的陣列,并將陣列變數的參考分配給myList -
double[] myList = new double[10];
下圖表示陣列myList, 這里,myList陣列中包含十個double值,索引從0到9,
3. 處理陣列
處理陣列元素時,經常使用for回圈或foreach回圈,因為陣列中的所有元素都是相同的型別,并且陣列的大小是已知的,
示例
這是一個完整的示例,演示了如何創建,初始化和處理陣列 -
import java.util.*; public class Test { public static void main(String[] args) { double[] myList = { 10.01, 12.19, 23.44, 43.95, 77.88, 65.00 }; // 列印所有元素 for (int i = 0; i < myList.length; i++) { System.out.print(myList[i] + ", "); } System.out.println(" "); // 求和 double total = 0; for (int i = 0; i < myList.length; i++) { total += myList[i]; } System.out.println("總和:" + total); // 查找最大值 double max = myList[0]; for (int i = 1; i < myList.length; i++) { if (myList[i] > max) max = myList[i]; } System.out.println("元素最大值:" + max); } }
執行上面示例代碼,得到以下結果:
10.01, 12.19, 23.44, 43.95, 77.88, 65.0, 總和:232.47 元素最大值:77.88
3.1. foreach回圈
JDK 1.5引入了foreach回圈或增強for回圈,它能夠在不使用索引變數的情況下順序遍歷整個陣列,
示例
以下代碼演示如何遍歷陣列myList中的所有元素 -
import java.util.*; public class Test { public static void main(String[] args) { double[] myList = { 10.01, 12.19, 23.44, 43.95, 77.88, 65.00 }; // Print all the array elements for (double element : myList) { System.out.print(element+", "); } } }
執行上面示例代碼,得到以下結果:
10.01, 12.19, 23.44, 43.95, 77.88, 65.0,
3.2. 將陣列傳遞給方法
就像將原始型別值傳遞給方法一樣,也可以將陣列傳遞給方法, 例如,以下printArray()方法用來列印int陣列中的元素 -
示例
import java.util.*; public class Test { public static void main(String[] args) { double[] myList = { 10.01, 12.19, 23.44, 43.95, 77.88, 65.00 }; // Print all the array elements printArray(myList); } public static void printArray(double[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } } }
執行上面示例代碼,得到以下結果:
10.01 12.19 23.44 43.95 77.88 65.0
3.3. 從方法回傳陣列
方法可以回傳陣列, 例如,以下方法回傳一個與給定引數陣列相反的陣列 -
import java.util.*; public class Test { public static void main(String[] args) { double[] myList = { 10.01, 12.19, 23.44, 43.95, 77.88, 65.00 }; // Print all the array elements printArray(myList); printArray(reverse(myList)); } public static void printArray(double[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } System.out.println(" "); } public static double[] reverse(double[] list) { double[] result = new double[list.length]; for (int i = 0, j = result.length - 1; i < list.length; i++, j--) { result[j] = list[i]; } return result; } }
執行上面示例代碼,得到以下結果:
10.01 12.19 23.44 43.95 77.88 65.0 65.0 77.88 43.95 23.44 12.19 10.01
3.4. Arrays類
java.util.Arrays類包含各種靜態方法,用于排序和搜索陣列,比較陣列和填充陣列元素, 對于所有基本型別,這些方法都會多載,
| 編號 | 方法 | 描述 |
|---|---|---|
| 1 | public static int binarySearch(Object[] a, Object key) |
使用二進制搜索演算法搜索指定的Object(Byte,Int,double等)陣列以獲取指定值, 必須在進行此呼叫之前對陣列進行排序, 如果搜索關鍵字包含在串列中,則回傳搜索關鍵字的索引; 否則,它回傳( -(插入點 + 1)), |
| 2 | public static boolean equals(long[] a, long[] a2) |
如果兩個指定的long陣列相等,則回傳true, 如果兩個陣列包含相同數量的元素,則兩個陣列被認為是相等的,并且兩個陣列中的所有相應元素對相等,如果兩個陣列相等,則回傳true, 所有其他原始資料型別(Byte,Short,Int等)可以使用相同的方法, |
| 3 | public static void fill(int[] a, int val) |
將指定的int值分配給指定的int陣列的每個元素,所有其他原始資料型別(Byte,Short,Int等)可以使用相同的方法, |
| 4 | public static void sort(Object[] a) |
根據元素的自然順序,將指定的物件陣列按升序排序, 所有其他原始資料型別(Byte,Short,Int等)可以使用相同的方法, |
詳細的java系統視頻免費學習地址
有完整的Java初級,高級對應的學習路線和資料!專注于java開發,分享java基礎、原理性知識、JavaWeb實戰、spring全家桶、設計模式、分布式及面試資料、開源專案,助力開發者成長!
歡迎關注微信公眾號:碼邦主

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/253804.html
標籤:Java
