1. 程式人生 > 其它 >Java陣列01:陣列的建立和使用

Java陣列01:陣列的建立和使用

陣列的定義

  • 陣列是相同型別資料的有序集合
  • 陣列描述的是相同型別的若干個資料,按照一定的先後次序排列組合而成
  • 其中,每一個數據稱作一個數組元素,每個陣列元素可以通過一個下標來訪問,下標從0開始

陣列的建立

首先必須宣告陣列變數,才能在程式中使用陣列

數值有三種初始化,分別為靜態初始化、動態初始化和預設初始化。因為陣列是引用型別,因此和類一樣,陣列的元素相當於類的例項變數,在陣列建立被分配空間以後,會被隱式的初始化

public class Hello {
    public static void main(String[] args) {
        int[] nums;  //陣列的宣告,陣列型別int[]
        nums = new int[10];  //陣列的建立,new物件
        int[] nums2 = new int[10];  //兩步可以合成一步
        //動態初始化
        nums2[0] = 1;  //根據下標給陣列賦值
        //靜態初始化
        int[] num3 = {1, 2, 3, 4};  //也可以直接給陣列賦值
        //預設初始化,值為0
        int[] num4 = new int[10];
        int sum = 0;
        for (int i = 0; i < num3.length; i++){  //.length方法獲取陣列的長度
            sum += num3[i];  //陣列下標從0開始,因此最大是num3.length - 1,超出會發生陣列越界錯誤
        }
        System.out.println(sum);
        System.out.println(num4[0]);
    }
}

記憶體分析

  • 棧:存放基本變數型別(包含數值)、引用物件的變數(只是該引用在堆裡面的具體地址)
  • 堆:存放new的物件和陣列,可以被所有執行緒共享,不會存放別的物件引用
  • 宣告陣列時,只是在棧中存放了一個數組名,只有在建立陣列時,才會在堆中分配new物件的空間,此時棧中的陣列名成為物件的引用

陣列的基本特點

  • 陣列的長度是確定的,一旦被建立,其大小不可再更改
  • 陣列的元素必須是相同型別,不允許出現混合型別
  • 陣列中的元素可以是任何資料型別,包括基本型別和引用型別
  • 陣列變數屬於引用型別,陣列本身就是物件,陣列元素相當於物件的成員變數。無論其儲存的是原始型別還是其他物件型別,陣列物件本身是在堆中的

陣列的使用

增強for迴圈(不常用)

public class Hello {
    public static void main(String[] args) {
        int[] num = {1, 2, 3, 4, 5};  //定義一個數組
        for (int i:num){  //從數組裡依次取出值,類似Python語言的for...in結構
            System.out.println(i);
        }
    }
}

陣列作為方法傳參

public class Hello {
    public static void main(String[] args) {
        int[] arrays = {1, 2, 3, 4, 5};
        PrintArray(arrays);  //陣列作為方法的引數
    }
    //列印陣列元素
    public static void PrintArray(int[] arrays){
        for (int i = 0; i < arrays.length; i++){
            System.out.print(arrays[i] + "\t");
        }
    }
}

陣列作為返回值

public class Hello {
    public static void main(String[] args) {
        int[] arrays = {1, 2, 3, 4, 5};
        PrintArray(reverse(arrays));
    }
    //將陣列元素反轉
    public static int[] reverse(int[] arrays){  //注意返回值型別為int[]
        int[] newArrays = new int[arrays.length];
        for (int i = 0; i < arrays.length; i++){
            newArrays[arrays.length - 1 - i] = arrays[i];
        }
        return newArrays;  //陣列作為返回值
    }
    //列印陣列的元素
    public static void PrintArray(int[] arrays){
        for (int i = 0; i < arrays.length; i++){
            System.out.print(arrays[i] + "\t");
        }
    }
}