Java 數組(一)定義與訪問


一、數組

1、容器概述

     容器:是將多個數據存儲到一起,每個數據稱為該容器的元素。

2、數組概述

    數組:數組就是存儲數據長度固定的容器,保證多個數據的數據類型要一致

  數組特點:

   (1)數組是一種引用數據類型;

   (2)數組當中的多個數據,類型必須統一;

   (3)數組的長度在程序運行期間不可改變;

3、數組的定義

  (1)創建數組

    a、先聲明,再用 new 運算符進行內存分配

    兩種聲明方式

數組元素類型 數組名稱[];
數組元素類型[] 數組名字;
      •      數組元素類型:決定了數組的數據類型,即數組要存放什么類型的數據,可以是基本數據類型和引用數據類型;
      •      數組名稱:合法的標識符即可;
      •      []:指明該變量是一個數組類型的變量;

       使用 new 運算符為數組分配內存空間。

數組名字 = new 數組元素的類型[數組元素的個數]
      •      數組名字:被連接到數組變量的名稱;
      •      數組元素的個數:指定數組中變量的個數,即數組的長度;

    注意使用 new 關鍵字分配數組時,必須指定數組元素的類型數組元素的個數

     b、聲明的同時為數組分配內存

    語法格式:

數組元素的類型[] 數組名 = new 數組元素的類型[數組元素的個數];

    (2)初始化數組

     數組的初始化:在內存當中創建一個數組,並且向其中賦予一些默認值。

    兩種常見的初始化方式:  

      動態初始化(指定長度)

      靜態初始化(指定內容)

    a、動態初始化數組的格式

數據類型[] 數組名稱 = new 數據類型[數組長度];
      •   數據類型:也就是數組當中保存的數據,全都是統一的什么類型;
      •      中括號:代表是一個數組;
      •      數組名稱:給數組取一個名字,合法的標識符即可;
      •      new:代表創建數組的動作;
      •      數據類型:必須和左邊的數據類型保持一致;
      •      中括號的長度:也就是數組當中,到底可以保存多少個數據,是一個int數字

      注意:數組有定長特性,長度一旦指定,不可更改。

     b、靜態初始化基本格式

數據類型[] 數組名稱 = new 數據類型[] { 元素1, 元素2, ... };

      注意:雖然靜態初始化沒有直接告訴長度,但是根據大括號里面的元素具體內容,也可以自動推算出來長度。

     c、靜態初始化省略格式

數據類型[] 數組名稱 = { 元素1, 元素2, ... };

4、數組的訪問

  (1)打印數組名稱

    打印數組的名稱,得到的是數組對應的:數組對象的類型@內存地址哈希值。(十六進制的地址值)

   (2)數組的長度

    每個數組都具有長度,而且是固定的,Java中賦予了數組的一個屬性,可以獲取到數組的 長度,語句為: 數組名.length ,屬性length的執行結果是數組的長度,int類型結果。

    由次可以推斷出,數組 的最大索引值為 數組名.length-1

   (3)訪問數組中的元素

    索引:每一個存儲到數組的元素,都會自動的擁有一個編號,從0開始,這個自動編號稱為數組索引 (index),可以通過數組的索引訪問到數組中的元素。

    格式:

數組名[索引]

     索引訪問數組中的元素:

數組名[索引] = 數值,     //為數組中的元素賦值
變量 = 數組名[索引]       //獲取出數組中的元素

 

   (4)數組中的默認值

    使用動態初始化數組的時候,其中的元素將會自動擁有一個默認值。規則如下:

      •  如果是整數類型,那么默認為 0;
      •     如果是浮點類型,那么默認為 0.0;
      •     如果是字符類型,那么默認為 '\u0000',字符編碼為0的空字符;
      •     如果是布爾類型,那么默認為 false;
      •     如果是引用類型,那么默認為 null。

    注意:靜態初始化其實也有默認值的過程,只不過系統自動馬上將默認值替換成為了大括號當中的具體數值。

二、數組原理內存圖

1、內存概述

  內存是計算機中的重要原件,臨時存儲區域,作用是運行程序。我們編寫的程序是存放在硬盤中的,在硬盤中的程 序是不會運行的,必須放進內存中才能運行,運行完畢后會清空內存。

  Java虛擬機要運行程序,必須要對內存進行空間的分配和管理

2、Java 虛擬機的內存划分

  為了提高運算效率,就對空間進行了不同區域的划分,因為每一片區域都有特定的處理數據方式和內存管理方式。

  JVM 的內存划分

  

   

3、數組在內存中的存儲

  (1) 一個數組與內存關系

  

   程序執行流程:

    a、main 方法進入方法棧執行;

    b、創建數組,JVM會在堆內存中開辟空間,存儲數組;

      c、數組在內存中會有自己的內存地址,以十六進制數表示;

    d、數組中有3個元素,默認值為 0

    e、JVM 將數組的內存地址賦值給引用變量 array;

    f、變量 array 保存的是數組內存中的地址,而不是一個具體是數值,因此稱為 引用數據類型

  (2)兩個數組與內存關系

 

  

 

  (3)兩個變量指向一個數組

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM