數組

  真是的,總結數據類型怎麼能把數組給忘了呢!數組是編程語言中最常見的一種數據結構,它可以用於存儲多個數據,一個數據被稱爲數組元素,通常可以通過數組元素的索引來訪問數組元素,包括元素數組元素賦值和取出數組元素的數據。顯然,不可能是基本數據類型,所以,數組是引用數據類型。哎呀,分類也是一個問題,歸到數據結構還是按數據類型劃到java基礎裏呢?算了,整理完再說……

         java數組要求所有數組元素具有相同的數據類型。一旦數組的初始化完成,數組在內存中所佔的空間將被固定下來,因此數組的長度將不可改變。即使把某個數組元素的數據清空,但它所佔的空間依然保存,依然屬於該數組,數組的長度依然不變。我們一般用“type[] arrayName”的形式來定義一個數組,要特別注意的是定義一個引用變量時只是定義了一個指針,這個引用變量還未指向任何有效的內存,因此不能定義數組時不能指定數組的長度。當然,這個定義的數組也不能使用,只有對數組進行初始化後才能使用。所謂初始化,即使爲數組元素分配內存空間,並且爲每個數組元素賦初始值。  數組的初始化有兩種形式:

         靜態初始化:初試化時由程序員顯式指定每個數組元素的初始值,有系統決定數組長度;如:intArr=new int[]{1,1,1}(簡化:intArr={1,1,1})當然,數組的定義和初始化可以同時完成。

         動態初試:初始化時程序員只指定數組長度,由系統爲數組分配初試值。如:int[] paces=new int[5]; (初始化一個長度爲5的int數組)。動態初始化時系統按如下規則分配初始值:

            byte、short、int和long類型--->0;

            float/double------------------------>0.0;

            char----------------------------------->'\u0000';

           boolean------------------------------->false;

           類、接口、數組---------------------->null.

         我們在訪問數組時如果指定的數組索引小於0或者大於數組長度,編譯程序時不會出現任何錯誤,但是運行時出現異常:java.long.ArrayIndexOutBoundsException。jdk1.5之後,java提供更簡單的循環:foreach循環(遍歷數組和集合),可以自動遍歷數組和集合的每一個元素。格式:

        //type是數組元素或集合元素的類型,variableNmae是形參名,collection就是數組名

          for  (type variableNmae:array | collection){

             //variableNmae自動迭代訪問每一個元素……

         }

       拷貝數組的數據時,我們絕對不能直接用“=”賦值,這樣我們隊新數組進行操作時也會影響到原來的數組,因爲它們指向的就是內存中的同一段地址。我們可以用System.arrayCope()方法,當然,也可以new一個新的數組實例,然後把數據一一裝填進去。

        呵呵,真好,看到了數組在內存中的運載機制。老規矩,還是用一個圖來解釋一下吧:

    

 

發佈了40 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章