C數組
一維數組:數組
定義方式:
datatype arrayname[length]
數組是一個總體,在內存中是連續的;spa
初始化:
1:能夠只給部分賦值
int a[5] = {1,2}; 剩下的自動賦值爲0
2:若是給所有元素賦值,那麼在數組定義時能夠不給出數組長度
int a[] = {1,2,3,4};3d
二維數組:
在內存中是連續排列的,按行排列。對象
初始化:
1:按行分段賦值
int a[2][2] = {{1,2},{3,4}};
2:按行連續賦值
int a[2][2]= {1,2,3,4};
3:能夠只對部分賦值,未賦值的自動取0
int a[3][3] = {{1}, {2}, {3}};
4),如對所有元素賦初值,則行數能夠不給出,但列必須給出
int arr[][3] = {1,2,3,4,5,6,7,8,9};blog
Java數組:
必須規定數組的長度,且數組長度終生不變
數組必須先初始化纔可使用,初始化的時候會分配內存;動態初始化和靜態初始化不能同時存在。內存
一維數組:編譯
動態初始化:
只指定數組的長度,具體數據不指定
數據類型[] 數組名 = new 數據類型[數組長度];
int sy[] = new int[10];
靜態初始化:
定義數組時,直接指定各個元素的值,由元素的個數決定數組的長度。
數據類型[] 數組名 = new 數據類型[]{1,2,3,4};
int[ ] a = {1,2,3,4,5};
注意:在Java程序中聲明數組時,不管用何種方式定義數組,都不能指定其長度。如以「int a[5];」方式定義數組將是非法的,該語句在編譯時將出錯。
二維數組:
特色是在堆內存中,各個一維數組的元素是連續的,但各個一維數組之間不是連續存放的。
動態初始化:變量
數據類型 [ ][ ] 數組名 = new 數據類型[行數][列數];
int [ ][ ] a = new int [3][4];
雖然在應用上很像C語言中的多維數組,但仍是有區別的,在C語言中定義一個二維數組,必須是一個m*n二維矩陣塊,如圖1所示。Java語言的多維數組不必定是規則的矩陣形式,如圖2所示。循環
圖1.C語言中二維數組必須是矩形數據類型
圖2.Java語言的二維數組不必定是矩形
如,定義以下的數組:
int [ ][ ] x;
它表示定義了一個數組引用變量x,第一個元素爲x[0],第n個元素變量爲x[n-1]。x中從x[0]到x[n-1]的每一個元素變量正好又是一個整數類型的數組引用變量。須要注意的是,這裏只是要求每一個元素都是一個數組引用變量,並無要求它們所引用數組的長度是多少,也就是每一個引用數組的長度能夠不同。如:
int [ ][ ] x;
x = new int [3][ ];
Java 這兩句代碼表示數組x有三個元素,每一個元素都是int[ ]類型的一維數組。至關於定義了三個數組引用變量,分別是int[ ] x[0]、int[ ] x[1]和int[ ] x[2],徹底能夠把x[0],x[1]和x[2]當成普通變量名來理解。
因爲x[0]、x[1]和x[2]都是數組引用變量,必須對它們賦值,指向真正的數組對象,才能夠引用這些數組中的元素。如
x[0] =new int[3];
x[1] =new int[2];
由此能夠看出,x[0]和x[1]的長度能夠是不同的,數組對象中也能夠只有一個元素。
程序運行到這以後的內存分配狀況如圖3所示。
圖3 Java中的二維數組能夠當作是多個一維數組
注意:二維數組要求必須指定高層維數,舉例說明:
正確的申請方式:只指定數組的高層維數,如:
int [ ][ ] smily = new int[9][ ];
正確的申請方式:指定數組的高層維數和低層維數,如:
int [ ][ ] smily = new int[9][5 ];
若是想直接在聲明二維數組時就給數組賦初值,能夠利用大括號實現,只要在數組的聲明格式後面再加上初值的賦值便可。其格式以下:
數據類型 [ ] [ ]數組名={ {第1行初值},
{第2行初值},
{ … },
{第n+1行初值} };
一樣須要注意的是,用戶並不須要定義數組的長度,所以在數據類型後面裏並沒必要填寫任何的內容。此外,在大括號內還有幾組大括號,每組大括號內的初值會依次賦值給數組的第一、2.……n+1行元素。如:
int [ ] [ ] a = { {11,22,33,44}, //二維數組的初始賦值
{66,77,88, 99} };
該語句中聲明瞭一個整型數組a,該數組有2行4列共8個元素,大括號裏的兩組初值會分別依次指定給各行裏的元素存放,a[0][0]爲11,a[0][1]爲22, …a[1][3]爲99.
注意:與一維數組同樣,在聲明多維數組並初始化時不能指定其長度,不然出錯。
如"int [2[3] b={ {1,2,3},{4,5,6} };",該語句在編譯時將出錯。
三維以上的多維數組
經過對二維數組的介紹,不難發現,要想提升數組的維數,只要在聲明數組的時候將下標與中括號再加一組便可,因此三維數組的聲明爲"int[ ] [ ] [ ] a;",而四維數組爲"int[ ] [ ] [ ] [ ] a;".以此類推.
使用多維數組時,輸入、輸出的方式和1、二維數組相同,可是每多一維,嵌套循環的層數就必須多一層,因此維數越高的數組其複雜度也就越高。
不要被本身感動。沒用
只有你足夠不同凡響,你才能足夠被須要。
自覺得是是人類的原罪。
加油哦!