Java入門(六):數組,java入門數組

來源:互聯網
上載者:User

Java入門(六):數組,java入門數組

數組是一種資料結構,用於儲存同一類型值的集合,也可以看做是資料類型一致的一組資料。

一、文法和聲明數組

1、文法:資料類型[ ] array = new 資料類型[長度];

注意:

使用長度建立數組的時候,每個元素都有預設值。

對於int、byt、short、long,其預設值為0;

對於double、float,其預設值為0.0;

對於boolean值,其預設值為false;

對於char,其預設值為編碼是0的字元;

對於參考型別(其中包括String),其預設值為null。

2、如果事先已經知道數組的元素,可以直接使用元素初始化數組,但是不需要寫數組長度,元素的個數就是數組長度。其次,例如int[ ] a 和int a[ ]兩種聲明都可用,但是不建議使用後面的寫法。

3、如果資料元素不多,並且知道每個元素的值,可以直接使用元素進行初始化。如果元素過多,使用長度建立數組。如果元素沒有初始值,使用長度初始化。

   /**     * 數組的聲明     */    public static void testMethod() {        // 第一種寫法        int[] array = new int[3];        // int類型的預設值是0        System.out.println(array[0]); // 0        String[] strArray = new String[3];        // 於參考型別(其中包括String),其預設值為null        System.out.println(strArray[0]); // null        // 數組聲明的第二種寫法        int[] array2 = {1,2,3};        System.out.println(array2[0]); // 1        // 下面這種寫法也可以,但是不建議使用,將[]緊跟在資料類型後面,方面理解和區分        int array3[] = {4,5,6};        System.out.println(array3[0]); // 4    }
二、訪問數組元素

1、使用 數組名[下標序號] 來訪問數組元素。

2、數組的 .length 屬性,可以擷取數組的長度,即數組元素個數。

3、數組下標範圍是從0開始,一直到 length-1 。

4、如果超範圍訪問,會出現運行異常,數組下標越界。下標小於0或者大於等於length,都是超範圍。

    /**     * 數組長度擷取,元素訪問     */    public static void arrayLength() {        // 擷取數組的長度,使用 .length 屬性        int[] array = {1,2,3,4};        System.out.println(array.length); // 4        // 數組的長度一經定義,就不能改變,因為其length屬性是由final關鍵字修飾的,不可修改        //array.length = 5; // The final field array.length cannot be assigned        // 訪問數組的元素,使用 [元素所在下標] , 下標從0開始        System.out.println(array[0]); // 列印數組第一個元素1        // 下標越界後,會出現 java.lang.ArrayIndexOutOfBoundsException 的異常        // System.out.println(array[4]);     } 
三、數組遍曆

利用for迴圈和for each迴圈,可以很輕鬆實現遍曆數組元素。

   /**     * 數組遍曆     */    public static void seeArrayElements() {        int[] array = {1,2,3,4,5};        // for迴圈遍曆列印        for (int i=0; i<array.length; i++) {            System.out.println(array[i]);        }        // for each遍曆列印,括弧中的第一個參數是元素的資料類型        // 第二個參數是擷取值的局部變數名稱(可以隨意命名),第三個參數是數組名        for (int element : array) {            System.out.println(element);        }    }
四、數組拷貝和擴容

1、數組拷貝。

使用java.util.Arrays類中的copyOf( )方法來實現,而Arrays.copyOf( )方法的實現原理是藉助System類的arraycopy方法,感興趣的可以去嘗試自己造下輪子,然後和官方的arraycopy方法進行對比。

2、數組擴容。

數組在初始化完成後,其長度是不能修改的,那麼想要將一個數組長度變大或者變小,同樣可以藉助Arrays.copyOf( )方法。無論數組是擴容還是變小,原數組是不會改變的,只是將對象換做了一個新數組。

   /**     * 複製數組,數組擴容,無論數組是擴容還是變小,原數組是不會改變的     */    public static void makeArrayCopy() {        // 複製數組,這裡用到的是java.util.Arrays類中的copyOf()方法        int[] array = {2,4,6};        int[] newArray = Arrays.copyOf(array, array.length);        // 判斷兩個數組是否相等,用到的是Arrays類中的equals()方法        System.out.println(Arrays.equals(array, newArray)); // true        // 數組擴容        int[] addLength = Arrays.copyOf(array, array.length + 1);        System.out.println(addLength.length); // 4        for (int e : addLength) {            System.out.println(e); // 依次列印2 4 6 0        }        // 數組變小        int[] addLength2 = Arrays.copyOf(array, array.length - 1);        System.out.println(addLength2.length); // 2        for (int e : addLength2) {            System.out.println(e); // 依次列印2 4        }    }
五、數組排序

對數組的相鄰元素進行比較,按照升序或降序規則進行換位,最後得到排序後的數組。

   /**     * 對數組進行升序排序     */    public static void sortArrayAsc() {        // 聲明並初始化一個數組        int[] array = {2, 10, 3, 78, 1, 29, 91, 5};        System.out.println(Arrays.toString(array));        for (int i=0; i<array.length-1; i++) {            for (int j=0; j<array.length-i-1; j++) {                if (array[j] > array[j+1]) {                    int k = array[j];                    array[j] = array[j+1];                    array[j+1] = k;                }            }        }        System.out.println(Arrays.toString(array));    }        /**     * 對數組進行降序排序     */    public static void sortArrayDesc() {        // 聲明並初始化一個數組        int[] array = {2, 10, 3, 78, 1, 29, 91, 5};        // 將數組變為字串輸出        System.out.println(Arrays.toString(array));        for (int i=0; i<array.length-1; i++) {            for (int j=0; j<array.length-i-1; j++) {                if (array[j] < array[j+1]) {                    int k = array[j];                    array[j] = array[j+1];                    array[j+1] = k;                }            }        }        System.out.println(Arrays.toString(array));    }        /**     * 利用Arrays.sort()方法進行排序     */    public static void utilSort() {        // 聲明並初始化一個數組        int[] array = {2, 10, 3, 78, 1, 29, 91, 5};        System.out.println(Arrays.toString(array));        Arrays.sort(array);        System.out.println(Arrays.toString(array));    }
六、二維數組

二維數組,從本質上來講,還是一維數組,對二維數組的操作其實還是對一維數組的操作。

1、聲明。類型[ ][ ] 變數名 = new 類型[ 長度 ][ 長度 ] ;

2、length屬性。其長度是第一個[ ]中的長度值。

3、下標也是從0開始,也遵循下標不能越界的規則。

4、其他動作也和一維數組的操作類似。

   public static void stateTwoDimArray() {        // 聲明一個二維數組       int[][] array = new int[2][3];        // 對其元素賦值        array[0][0] = 1;        array[0][1] = 2;        array[0][2] = 3;        System.out.println(Arrays.toString(array[0])); // [1, 2, 3]        System.out.println(Arrays.toString(array[1])); // [0, 0, 0]        System.out.println(array.length); // 2        // 聲明並初始化一個二維數組        int[][] array2 = {{1,2},{3,4}};        System.out.println(Arrays.toString(array2[0])); // [1, 2]        System.out.println(Arrays.toString(array2[1])); // [3, 4]        System.out.println(array2.length); //2    }

上面的代碼都上傳至了GitHub,地址是https://github.com/XiaoChuan94/javalearning/tree/master/javalearningday05,有需要的可以去下載觀看,如果喜歡就給個star吧!如有不足,歡迎下方留言交流。

 

文章首發於我的個人公眾號:悅樂書。喜歡分享一路上聽過的歌,看過的電影,讀過的書,敲過的代碼,深夜的沉思。期待你的關注!

公眾號後台輸入關鍵字“Java學習電子書”,即可獲得12本Java學習相關的電子書資源,如果經濟能力允許,還請支援圖書作者的紙質正版書籍,創作不易。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.