數組的特點
- 數組可以存放多個資料
- 數組是一種引用資料類型
- 數組當中的資料類型必須統一
- 數組的長度在程式運作期間不可改變
數組的定義和初始化
聲明數組文法:
資料類型[] 數組名;
擷取數組長度:
數組名.length
數組的初始化:
- 靜态初始化(指定内容)
可以把數組的聲明和初始化在同一行:數組名 = new 元素的資料類型[]{元素的值清單}
資料類型[] 數組名 = new 元素的資料類型[]{元素的值清單} //簡寫形式 資料類型[] 數組名 = {元素的值清單}
- 示例:
public static void main(String[] args) { int[] scores; scores = new int[]{20, 40, 55, 70, 84, 96}; for (int i = 0; i < scores.length; i++) { System.out.println(scores[i]); } //聲明和初始化放在一起 int[] scores2 = new int[]{10, 40, 60, 80}; //簡寫形式 int[] scores3 = {50, 60, 70, 80}; }
- 動态初始化(指定長度)
資料類型[] 數組名 = new 元素的資料類型[長度] 數組名 = new 元素的資料類型[長度]
-
public static void main(String[] args) { //聲明數組 char[] c; //動态初始化 c = new char[10]; for (int i = 0; i < c.length; i++) { System.out.println(c[i]); } int[] array1 = new int[30] }
通路資料的元素
數組名稱[索引值]
- 索引從 開始,一直到
為止數組的長度-1
public static void main(String[] args) {
int[] a1 = {10, 20, 30};
System.out.println(a1[0]); //10
System.out.println(a1[1]); //20
System.out.println(a1[2]); //30
//動态初始化int類型的數組,如果沒有指派,預設0
int[] a2 = new int[3];
System.out.println(a2[0]); //0
System.out.println(a2[1]); //0
System.out.println(a2[2]); //0
}
注意:
- 如果通路的資料元素編号不存在,則會引發 ArrayIndexOutOfBoundsException 異常。
- 如果數組指派為null,沒有使用new建立則會引發 NullPointerException 異常
int[] a1 = null; System.out.println(a1[0]);
案例:求出數組中的最大值
public static void main(String[] args) {
int[] array = {7, 24, 15, 28, 10};
int max = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
}
}
System.out.println("最大值:" + max);
}
二維數組
二維數組的聲明和初始化
public class ArrayTest {
public static void main(String[] args) {
//靜态初始化,可用于不規則二維數組的初始化
int[][] arr1 = new int[][]{{1, 2, 3}, {4, 5}, {6, 7, 8}};
//動态初始化,方式1
String[][] arr2 = new String[3][2];
//動态初始化,方式2,聲明一一個二維數組,用于存儲3個一維數組,不指定每個一維資料存多少個數組
String[][] arr3 = new String[3][];
}
}
擷取二維數組的長度和指定位置的元素
public class ArrayTest {
public static void main(String[] args) {
int[][] arr1 = new int[][]{{1, 2, 3}, {4, 5}, {6, 7, 8}};
System.out.println(arr1[0][1]); //2
System.out.println(arr1.length); //3
System.out.println(arr1[1].length); //2
}
}
周遊二維數組
public class ArrayTest {
public static void main(String[] args) {
int[][] arr1 = new int[][]{{1, 2, 3}, {4, 5}, {6, 7, 8}};
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr1[i].length; j++) {
System.out.print(arr1[i][j] + " ");
}
System.out.println();
}
}
}
Arrays工具類
方法 | 說明 |
---|---|
boolean equals(int[] a, int[] b) | 判斷兩個數組是否相等 |
String toString(int[] a) | 将數組轉換為字元串,并傳回結果 |
void fill(int[] a,int val) | 将指定值填充到數組中 |
void sort(int[] a) | 對數組進行排序 |
int binarySearch(int[] a, int key) | 對排序後的數組使用二分查找法查找指定元素的索引值 |
/**
* java.util.Arrays:操作數組的工具類
*/
public class ArrayTest {
public static void main(String[] args) {
int[] arr1 = new int[]{1, 2, 3, 4};
int[] arr2 = new int[]{1, 4, 3, 5, 2};
boolean isEquals = Arrays.equals(arr1, arr2);
System.out.println(isEquals); //false
System.out.println(Arrays.toString(arr1)); //[1, 2, 3, 4]
Arrays.fill(arr1, 10);
System.out.println(Arrays.toString(arr1)); //[10, 10, 10, 10]
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2)); //[1, 2, 3, 4, 5]
int[] arr3 = new int[]{-10, 2, 6, 18, 24, 45};
int index = Arrays.binarySearch(arr3, 24); //4
System.out.println(index);
}
}