1. 程式人生 > >Java基礎 - Java中的陣列

Java基礎 - Java中的陣列

第一章 陣列的定義和賦值
    1、陣列的含義和特點
        含義:
            用於存放多個相同資料型別變數的容器,叫做陣列.
        特點:
            a.引用資料型別(在記憶體當中存在地址值和預設值)
            b.存放的是資料型別相同的資料
            c.陣列的長度一旦確定之後,在執行的過程當中不能改變.
    2、陣列的初始化方式
        A.動態初始化
            a.含義: 
                只是給出陣列的長度,並沒有給出陣列的具體值
            b.定義格式:  
                資料型別[] 陣列名稱 = new 資料型別[陣列長度];
            c.例如:
                int[] arrayA = new int[10];                      //表示定義了一個int型別的陣列,可以存放10個int資料
                boolean[] arrayB = new boolean[4];      //表示定義了一個boolean型別的陣列,可以存放4個boolean資料
                String[] arrayC = new String[5];             //表示定義了一個String型別的陣列,可以存放5個String字串資料
        B.靜態初始化
            a.含義:
                只是給出具體的資料值,長度由系統自己推算出來.
            b.定義格式:
                標準格式:  資料型別[] 陣列名稱 = new 資料型別[]{ 數值1,數值2,數值3...};
                簡化格式:  資料型別[] 陣列名稱 = { 數值1,數值2,數值3...};    //推薦使用
            c.例如:
                標準格式案例:
                    int[] arrayA = new int[]{13,16,12,14};         //表示定義一個int陣列,數值分別是13,16,12,14.長度系統自己算
                簡化格式案例:
                    int[] arrayB = {13,16,12,14};                      //表示定義一個int陣列,數值分別是13,16,12,14.長度系統自己算
        C.應用場景:
            如果你不知道陣列當中,具體放哪些內容.但是你知道有多少.採用"動態初始化"
            如果你知道陣列當中的具體內容,不去數陣列資料的個數.採用"靜態初始化",推薦使用"簡化的格式"
        D.陣列當中的元素訪問
            格式:
                陣列名稱[索引值]
            例如:
                int[] arr = {13,15,12,11};          //定義了一個int型別的陣列arr.值是 13,15,12,11
                arr[2]                                       //獲取到的是陣列索引值為2的元素.arr[2]=12
            注意:
                陣列的索引: 陣列當中資料的編號.編號從0開始.最大編號是陣列的長度-1
    3、資料型別的預設值(瞭解)
        A.基本資料型別
            a.整數 byte,short,int,long        0
            b.浮點數 float,double            0.0
            c.字元 char                        '\u0000'
            d.布林 boolean                     false
        B.引用資料型別
            所有的引用資料型別預設值都是 null
            
    
第二章 陣列的記憶體圖


    1、Java的記憶體分配
        A.棧(Stack)       存放區域性變數,方法的執行是在棧當中
        B.堆(Heap)        存放new出來的東西,有地址值和預設值
        C.方法區(Method Area)
        D.本地方法棧(Native Method Stack)
        E.暫存器(PC Register)
    2、兩個陣列指向同一個地址(理解即可)
        A.生活例項:
            你和你的同桌共用一個水杯,他喝了一口,你看到少了一口,再往裡面加一口,他看到多了一口.然後再喝一口
        B.含義:
            兩個引用資料型別,指向同一個堆記憶體的地址.
            如果其中一個引用資料型別,對堆記憶體當中的資料進行了修改.
            那麼兩個引用資料型別,將同時發生修改.
    3、陣列操作的兩個常見小問題
        A.陣列索引越界異常
            a.單詞: ArrayIndexOutOfBoundsException  陣列索引越界異常
            b.原因: 訪問了不存在索引.(可能是負數,可能是大於等於陣列長度的資料)
            c.解決: 修改索引值.改為存在的索引
        B.空指標異常
            a.單詞: NullPointerException 空指標異常
            b.原因: 沒有new
            c.解決: 補上new


            
第三章 陣列的基本操作
    1、陣列的長度
        獲取陣列長度的方式:
            陣列名稱.length
        例如:
            int[] arr = {15,12,17,14,11};  //定義了一個int型別的陣列
            System.out.println(arr.length); //列印的結果是 5
        注意:
            陣列的長度,也就是陣列當中元素的個數.
    2、陣列的遍歷
        A.遍歷的含義:
            把陣列當中的元素,無重複無遺漏的打印出來.就叫遍歷.
        B.格式:
            for(int i=0;i<arr.length;i++){
                System.out.println(arr[i]);
            }
        C.快捷鍵:
            陣列名稱.fori
            array.fori
    3、求最值的操作
        步驟:
            a.在迴圈前. 賦值   int max = arr[0];
            b.在迴圈中. 交接   判斷,每一個比較.   max = arr[i];
            c.在迴圈外. 列印   System.out.println(max);
     
        
第四章 陣列和方法結合的返回值與引數問題


    1、陣列作為方法的引數傳入
        本質: 
            如果陣列作為方法的形式引數傳入.寫在方法的小括號上面.傳遞的是地址值
        例如:
            //這裡方法的形式引數是 int[] arr
            public static void printArray(int[] arr){
                
            }
            //如果去呼叫方法
            int[] arr = {11,22,33,44};
            printArray(arr);            //傳入的是arr.本質是地址值
    2、陣列作為方法的返回值返回
        本質: 
            如果陣列作為方法的返回值返回.寫在方法名的前面.返回的是地址值
        例如:
            //這裡的方法返回值寫 int[]
            public static int[] jiSuan(){
                int[] arr = {10,20};
                return arr;
            }
            //如果此時此刻呼叫方法
            int[] result = jiSuan();