來自學習java瘋狂講義的筆記
1、數組初始化分爲靜態初始化和動態初始化,靜態初始化有程序員顯示制定每個元素的初始值,由系統決定數組長度。動態初始化只指定數組長度,由系統爲數組元素分配初始值,整形爲0,浮點型爲0.0,字符型爲\u000,布爾型爲false,引用類型爲null.
靜態初始化:
int[] intarr;
intarr=new int[]{1,2,3};
或 int[] intarr={1,2,3,4,5};
動態初始化:
int[] a=new int[5];
*不能同時使用靜態初始化和動態初始化,即不要再初始化數組時既指定數組長度,也給每個數組分配初始值。
2、foreach循環循環遍歷數組
int[] a={1,2,3};
for(int i:a){
System.out.println(i);
}
*foreach 循環迭代數組元素時,並不能改變數組元素的值。
3、數組在內存中的運行機制
1)一旦數組初始化完成之後,數組在內存中所佔的空間將被固定下來,因此數組的長度將不可改變,即使把某個數組的元素全部清空,他所佔的內存依然保留,屬於該數組的長度依然不變。
2)數組是一種引用數據類型,數組引用變量只是一個引用,數組元素和數序變量在內存中十分開放的。如果希望在程序中訪問數組對象本身,則只能通過這個數組的引用變量來訪問它。
實際的數組對象被存儲在堆內存中,如果引用該數組對象的數組引用變量是局部的,那麼它被存在棧內存中。
4、二維數組
1)二維數組實質上還是一維數組,只是其數組元素也是引用,數組元素裏保存的引用指向一維數組。
2)定義:int[][] a;
初始化:a=new int[5][];
這相當於初始化一個一維數組,這個一維數組的長度是5,同樣,因爲這個一維數組的數組元素是引用類型(數組類型),所以系統爲每個數組元素分配初始值null。
3)使用靜態初始化一個二維數組:
String[][] str=new String[][]{new String[3],new String[]{"hello"}};
或String[][] str={new String[3],new String[]{"hello"}};
4)動態初始化和遍歷
int[][] a;
a=new int[3][4];
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++)
System.out.println(a[i][j]);
}