1. 程式人生 > >從零開始學java(數組)

從零開始學java(數組)

數組元素 oid 運行時 分配內存 image style 蘋果 固定 沒有

數組

  java中,數組其實也是一個數據類型,數組也是編程語言中比較常見的一種數據類型,用於儲存多個數據,每個數組元素存放一個數據,通常可以通過數組元素的索引訪問數組元素,包括為元素賦值和取出數組中元素的值。

  簡單理解數組

  java中的數組要求一個數組內只能存儲一種數據類型,因為java是面向對象的所以我們之前說到了面向對象的多態性,所以這裏的類型引用可以是父類,實例的子類。(即:水果類作為引用,蘋果實例,草莓實例,香蕉實例),而且java的數組一旦初始化完成,數組的內存中所占的空間將被固定下來,因此數組的長度是不可變的。就算把它數據清空,它所占用的大小一樣是這麽大。

  數組可以儲存基本數據類型,也可以儲存引用數據類型。

  定義數組的語法: type[] arrayName 或者 type arrayName[] 註意:定義數組時不能指定數組的長度 例如: type [4] arrayName

  數組的初始化

  java語言中數組必須要初始化才可以使用,所謂的初始化,就是為數組的所有元素都分配內存空間,並為每個數組元素都賦值初始值。

  數組的初始化有兩種方式:

  靜態初始化:初始化時由程序員顯式指定每個元素的初始值,由系統決定長度。

  動態初始化:初始化時由程序員指定長度,系統默認初始值。

public static void main(String[] args) {
        
//靜態初始化語法: arrayName = new type[]{element1,element2,element3.....} String [] _strs = new String[]{"靜","態","初","始","化"}; //動態初始化語法: arrayName = new type[length] Object[] _strsObject = new String[5]; }

  註意不要同時使用靜態初始化和動態初始化,也就是在數組初始化時不要既指定它的長度又為每個元素分配初始值。

  數組的使用

  訪問數組元素是通過數組引用變量後緊跟一個‘[]‘ ,方括號中是數組中的數組元素的索引。java語言中的索引是從0開始的,也就是說,索引的開始是0 結束是長度-1。

  

      //我們定義一個長度為5的String類型的數組
        String [] _strs = new String[]{"str_1","str_2","str_3","str_4","str_5"};
        
        System.out.println(_strs[1]);//打印結果為   str_2 
        _strs[1] = "我被改變了";
        System.out.println(_strs[1]);//打印結果為   我被改變了
        
        //配合for循環使用數組
        for(int i =0 ;i<_strs.length;i++){
            System.out.println(_strs[i]);
        }
        //循環遍歷了數組中的所有元素按照順序打印了一遍    同樣賦值也可以這麽做

  深入數組

  技術分享圖片

  這裏說下堆內存(heap)與棧內存(stack)

 當一個方法執行時,每個方法都會建立自己的內存棧,在這個方法內定義的變量將會逐個被放入這塊棧內存中,伴隨方法的結束, 這個方法的內存棧也將被自  然銷毀。因此呢,所以在方法中的定義的局部變量都是放在棧內存的;在程序中創建一個對象的時候,這個對象將被保存到運行時數據區中,以便於重復利用   (因為對象的創建成本通常較大說到這就能理解懶加載的重要性),這個運行時數據區就是堆內存。堆內存的對象不會隨著方法的結束而銷毀,即使方法結束後,  這個對象還可能被另外一個引用變量所引用(在方法的參數傳遞時很常見),則這個對象依然不會被銷毀。只有當一個對象沒有任何引用變量引用它時,系統的  垃圾回收器才會在合適的時候回收它。

  

從零開始學java(數組)