天天看點

Java數組

數組的特點

  • 數組可以存放多個資料
  • 數組是一種引用資料類型
  • 數組當中的資料類型必須統一
  • 數組的長度在程式運作期間不可改變

數組的定義和初始化

聲明數組文法:

資料類型[] 數組名;
           

擷取數組長度:

數組名.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);

    }
}
           

繼續閱讀