區分三種初始化方式:
格式一:
數據類型[][] 數組名 = new 數據類型[m][n];
m:表示這個二維數組有多少個一維數組。
n:表示每一個一維數組的元素有多少個。
//例:int arr[][]=new int[3][2];
如下圖
格式二:
數據類型[][] 數組名 = new 數據類型[m][];
m:表示這個二維數組有多少個一維數組。
列數沒有給出,可以動態的給。這一次是一個變化的列數。
如下圖
格式三:
基本格式:
數據類型[][] 數組名 = new 數據類型[][]{{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}};
簡化版格式:
數據類型[][] 數組名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}};
如下圖:
內存分配詳解:
引用類型的默認值為null,定義二維數組時,會在堆內存為其分配內存空間(必須知道二維數組的行數,即一維數組的個數,才能夠為其分配內存空間),首先給一個地址值0x001給arr,然后為二維數組里的一維數組分配內存空間,分別給一個地址值給一維數組,即0x0001給arr[0],0x0002給arr[1],0x0003給arr[2]。如果arr[3][]第二個元素值沒有給出(相當於里面的一維數組的元素個數不知道),即以格式2定義二維數組,那么就無法為一維數組靜態的分配內存空間了,即打印出來的arr[0],arr[1],arr[2]地址值是默認值null,可以動態的為其分配內存空間。