1. 程式人生 > >Java基礎之數組(一)

Java基礎之數組(一)

style 變量 屬於 基本數據 一個 類型 com sys 地址

  數組的定義

數組是相同類型數據的有序集合。數組描述的是相同類型的若幹個數據,按照 一定的先後次序排列組合而成。其中,每一個數據稱作一個元素,每個元素可以通過一個索引(下標)來訪問它們。數組的三個基本特點:

1,長度是確定的。數組一旦被創建,它的大小就是不可以改變的。

2,其元素必須是相同類型,不允許出現混合類型。

3,數組類型可以是任何數據類型,包括基本數據類型和引用類型。

註: 數組變量屬於引用類型,數組也可以看成是對象,數組中的每個元素相當於該對象的成員變量。數組本身就是對象,Java中對象是在堆中的,因此數組無論保存原始類型還是其他對象類型,數組對象本身是在堆中存 儲的。  

數組的聲明:

數組的聲明方式有兩種(以一維數組為例)

type[] array_name;//(推薦使用這種方式)

type array_name[];

註意:

  1,聲明的時候並沒有實例化任何對象,只有在實例化數組對象時,JVM才分配空間,這時才與長度有關。

  2,聲明一個數組的時候並沒有數組真正被創建。

  3,構造一個數組,必須指定長度。

創建一維數組

   /**

        * 聲明並創建一個一維數組

        */

       int [] array = null
;//聲明一個一維數組 array = new int[10];//創建一維數組,並給定數組長度為10 for(int i=0;i<array.length;i++){//通過for循環,為數組賦值 array[i] = (int)(Math.random()*10) + 1; } //for each循環遍歷數組 for (int i : array) { System.out.print(i + " "); }

關於上面代碼的內存分配圖:

  技術分享圖片

當程序被加載後,程序先進入main方法中,在棧內存中創建一個int類型的數組的引用名為s值為null(int s = null;)。接著在堆內存中創建一個長度為10的數組對象,同時將該對象的引用地址賦給棧內存中的s(s = new int[10])。最後根據數組的下標在數組中的每一個下標處賦值。

//聲明引用數據類型的數組

       Man [] mans;

       //為引用數據類型的數組指定長度

       mans = new Man[10];

       //創建對象

       Man man1 = new Man(1, 12);

       Man man2 = new Man(2, 22);

       //給引用類型數組賦值

       mans[0] = man1;

       mans[1] = man2;

上面代碼的內存圖:

技術分享圖片

初始化

數組的初始化方式總共有三種:靜態初始化,動態初始化,默認初始化。

1, 靜態初始化

除了用new關鍵字來產生數組以外,還可以直接在定義數組的同時就為數組元素分配空間並賦值。

  

    /**

        * 靜態初始化數組

        */

       int [] array = {1,3,5,6};//靜態初始化基本數據類型數組

     Man[] man = {new Man(1, 12),new Man(2, 13)};//靜態初始化引用數據類型數組

2,動態初始化

數組定義與為數組元素分配空間並賦值的操作分開進行。

    /**

        * 動態初始化數組

        */

       int [] a1 = new int[2];//動態初始化數組,先分配空間

       a1[0] = 1;//給數組元素賦值

       a1[1] = 2;

3, 數組的默認初始化

數組是引用類型,它的元素相當於類的實例變量,因此數組一經分配空間,其中的每個元素也被按照實例變量同樣的方式被隱式初始化。

  

int a2[] = new int[2]; // 默認值:0,0

boolean[] b = new boolean[2]; // 默認值:false,false

String[] s = new String[2]; // 默認值:null, null

數組的遍歷方式,可以通過for循環或者for each循環的方式 

  /**
         * 聲明並創建一個一維數組
         */
        int [] s = null;//聲明一個一維數組
        s = new int[10];//創建一維數組,並給定數組長度為10
        for(int i=0;i<s.length;i++){//通過for循環,為數組賦值
            s[i] = 2*i + 1;
        }
        //使用for循環遍歷數組
        for (int i = 0; i < s.length; i++) {
            System.out.print(s[i] + " ");        
        }
        //for each循環遍歷數組
        for (int i : s) {
            System.out.print(i + " ");
        }

Java基礎之數組(一)