java數組初始化及記憶體分析__java

來源:互聯網
上載者:User

數組:相同類型的、用一個標識符名封裝到一起是一個對象序列或基本類型資料序列。

一維數組的聲明:1 int[ ] a1;    2  int  a1[ ]

兩種格式含義一樣,第二種符合c和c++程式員的習慣。第一種或許更合理,表明類型是“一個int型數組”。

編譯器不允許指定數組的大小。聲明數組的時候不能指定其長度(元素的個數)如int a[5]; //非法。初始化的時候可以指定大小。

Java中的數組必先初始化才可以使用,所謂初始化就是為數組的數組元素分配記憶體,並為每個數組元素賦值;現在只是對數組的一個引用(已經為該引用分配了儲存空間),並沒有給數組對象本身分配任何空間,初始化才會建立相應的儲存空間。

初始化的兩種方式:
靜態初始化:初始化時由我們自己指定每個數組元素的初始值,由系統決定需要的數組長度;
格式:數組名 = new 數群組類型[]{元素1,元素2,元素3...元素n};   a1 = new  int{1,2,3,4,5};
簡化文法:數組名 = {元素1,元素2,元素3...元素n};                      a1 =  {1,2,3,4,5};
動態初始化:初始化時由我們指定數組的長度,由系統為數組元素分配初始值;
格式:數組名 = new 數群組類型[數組長度];                          a1 = new int[ 8];

注意:不能靜態和動態初始化同時使用,也就是說不能同時指定數組的長度和元素;數組的長度一旦確定,就不能改變,也就數組是定長的;

所有數組都有一個固有成員,length,通過 數組名.length 可獲得數群組成員個數。java數組下標是從0開始的,最大下標為數組名.length-1。超出這個邊界會出現異常數組腳標越界異常(ArrayIndexOutOfBoundsException)。

記憶體分析:

樣本:

public class ArrayInit{    public static void main(String[] args){        int[] a1 ={1,2,3,4,5};        int[] a2;        a2 =a1;        for(int i =0;i<a2.length;i++)             a2[i]=a2[i]+1;        for(int i =0;i<a1.length;i++)              System.out.println("a1["+ i +"] =" + a1[i]);    }}輸出:a1[0]=2a1[1]=3a1[2]=4a1[3]=5a1[4]=6


給出了a1的初始值,但a2在後面被賦給a1數組,倆數組指向相同的堆地址,所以a2數組的值改變,a1也跟著改變。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.