1. 程式人生 > >JAVA——陣列與記憶體控制

JAVA——陣列與記憶體控制

//基於瘋狂JAVA的筆記

陣列與記憶體控制

靜態初始化和動態初始化
靜態:初始化時指定每個陣列的初始值
無需指定陣列長度,指定陣列元素即可


動態:初始化時由程式設計師指定長度,再由系統為陣列元素分配初值
只需指定陣列長度,陣列元素由系統分配

public class RWX
{
    public static void main(String[] args){
    //靜態
    String[] books = new String[]
    {
        "活著",
        "追影子的人",            //注意有逗號
        "四六級必備單詞"
}; //靜態簡化 String[] names = { "習大大", "彭麗媛" }; //動態 String[] strArr = new String[5]; System.out.println("第一個陣列的長度" + books.length);//訪問陣列長度 System.out.println("第二個陣列的長度" + names.length); System.out.println("第三個陣列的長度" + strArr.length); } }

不要同時使用靜態和動態初始化,也就是說,不要在對陣列初始化時,既指定陣列的長度,又為陣列元素賦初值


JAVA的陣列變數是一種引用型的變數,陣列變數並不是陣列本身,他只是指向堆記憶體中的陣列物件。因此可以改變一個數組變數所引用的陣列,這樣可以造成陣列長度改變的假象

//讓books,strArr陣列變數指向names所引用的陣列
    books = names;
    strArr = names;
    System.out.println("books陣列長度為:" + books.length); 
    System.out.println("strArr陣列長度為:" + books.length); 
    books[1] = "胡景濤";
    System.out
.println("books陣列的第二個元素為" + books[1]);

這時,上述兩個陣列都指向了books陣列變數引用的陣列
books陣列的長度不變
其他兩個陣列長度與books統一。
而這兩個陣列變數由於未被引用,成了垃圾,等待垃圾回收機制回收