JavaSE基礎入門(二)

NotLoading發表於2020-09-28

陣列

陣列是一種特殊的資料結構,它是由同一型別的資料組成的大小固定的有序的集合。陣列的大小是固定的,不能改變。存入陣列的資料是有序的,通過下標來訪問指定位置的資料。

1、陣列的宣告與初始化 

//宣告一個int型別的陣列
int[] arr1;
//宣告一個String型別的陣列
String arr2[];

由上可見,宣告一個陣列有兩種方式:一是在陣列元素型別(int)後面加"[]"符號,二是在陣列名(arr2)後面加"[]"符號,兩種方式均能宣告一個陣列。陣列元素型別確定了該陣列中能存入的資料型別。

2、陣列的初始化

陣列的初始化也分為兩種,分別為靜態初始化和動態初始化。靜態初始化表示在宣告陣列的時候,已經確定了陣列裡面的資料以及陣列的大小;動態初始化則在宣告時,只確定陣列的大小,而陣列裡面的資料,則通過後續新增。

//靜態初始化陣列
int[] arr1 = {1,2,3,4};
String arr2[] = new String[]{"a","b","c"};
//動態初始化陣列
int arr3[] = new int[3];
arr3[0]=1;
arr3[1]=2;
arr3[2]=3;
System.out.println(arr1);
System.out.println(arr2);
System.out.println(arr3);  

執行結果如下:
[I@1540e19d
[Ljava.lang.String;@677327b6
[I@14ae5a5

由上面可以看出,初始化陣列之後,對其直接列印,只能得到一個地址值,而無法獲得陣列裡面的資料如需獲得陣列中的資料,則需要對陣列進行遍歷。

3、陣列的遍歷

如果陣列的資料很少,可以直接通過 arr[i] 的方式來一個資料一個資料的獲取,當然了,這個方法不僅效率慢,而且還很 low,我們可以通過迴圈的方式來獲取陣列中的資料。

//遍歷arr1
for(int i = 0;i < 4;i++){
   System.out.print(arr1[i]+" ");
}
//假設不知道陣列的長度可以呼叫陣列的 length 屬性,獲得陣列的長度
for (int i = 0;i < arr3.length;i++){
   System.out.print(arr3[i]+" ");
}

執行結果如下:
1 2 3 4
1 2 3

 4、陣列的排序

public static void main(String[] args) {
    //1、定義一個陣列
    int[] arr = {3,5,7,4,2,1};
    //3、呼叫px方法
    px(arr);
    }
//2、定義一個排序方法
public static void px(int arr[]){
    //定義一個空值,用於交換資料位置
    int temp = 0;
    for (int i = 0; i < arr.length; i++) {
        //巢狀迴圈,將每個數和第一個數比較
        for(int j = i+1;j<arr.length;j++){
            //比較第一個數與其後面的數
            if(arr[i]>arr[j]){
                //如果第一個數大於第二個數,將其互換位置
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    for(int i = 0;i<arr.length;i++){
        System.out.print(arr[i]+" ");
    }
}

程式碼執行結果如下:
1 2 3 4 5 7

5、工具類Arrays

陣列的遍歷和排序,其實可以藉助陣列工具類 Arrays 來簡化實現。

import java.util.Arrays;
public class Test {
    public static void main(String[] args) {
        int[] arr = {4,2,8,6,1};
        //toString()方法可以等效for迴圈,將陣列中的資料輸出
        System.out.println(Arrays.toString(arr));
        //sort()方法可以將陣列中的資料按從小到大的順序排序
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

sort()方法是將資料從小到大排序,我不知道 Arrays 工具類中是否有從大到小或者反轉的方法, 希望有大神告知一下!

6、陣列的異常

java.lang.ArrayIndexOutOfBoundsException

索引越界異常,是由於陣列的索引從 0 開始,所以一個陣列的索引應該比陣列的長度少 1 ,出現這種異常都是訪問的索引大於等於陣列的長度。

java.lang.NullPointerException

空指標異常,這個異常是由於陣列動態初始化之後,沒有給陣列新增資料,就要訪問陣列裡面的資料,就會報錯。

 

結語

由於是剛學Java,有什麼錯誤或者缺少了什麼,請指正,萬分感謝!