java 數組變量與數組對象


數組是否必須初始化
對於這個問題,關鍵在於要弄清楚數組變量和數組對象的差別。數組變量是存放在棧內存中的,數組對象是存放在堆內存中的。數組變量只是一個引用變量,他能夠指向實際的數組對象。
所謂的數組初始化並非對數組變量初始化,而是對數組對象進行初始化。

public static void main(String[] args) {
    int [] num1 = new int[]{11,22,33,44,55};
    int [] num2 = num1;
    int [] num3 = new int[]{1,2,3,4,5};
    int [] num4 = null;
    int [] num5 = {};
    
    num1 = num3;
    num3[2] = 0;
    num2[2] = num1[2];
    System.out.println(num1[2]);
    System.out.println(num2[2]);
    System.out.println(num4[0]);//java.lang.NullPointerException
    System.out.println(num5[0]);//java.lang.ArrayIndexOutOfBoundsException: 0
}

1.java的數組變量是引用類型的變量

2.大部分時候,我們把數組變量和數組對象搞混了,數組變量只是一個引用變量(類似C里的指針),通常存放在棧內存中(也可放入堆內存中的);而數組對象就是保存在堆內存中的連續內存空間。對數組執行初始化,其實並不是對數組變量執行初始化,而是要對數組對象執行初始化---也就是為該數組對象分派一塊連續的內存空間,這塊連續內存空間的長度就是數組的長度。
對於數組變量來說,它並不需要進行所謂的初始化,只要讓數組變量指向一個有效的數組對象,程序即可正常使用該數組變量了

3. 所有局部變量都是放在棧內存里保存的,不管其是基本類型的變量,還是引用類型的變量,都是存儲在格子的方法棧區中;但引用類型變量所引用的對象(包括數組,普通java對象)則總是存儲在堆內存中。

 


免責聲明!

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



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