JAVA——陣列與記憶體控制
阿新 • • 發佈:2018-11-17
//基於瘋狂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統一。
而這兩個陣列變數由於未被引用,成了垃圾,等待垃圾回收機制回收