C陣列
一維陣列:
定義方式:
datatype arrayname[length]
陣列是一個整體,在記憶體中是連續的;
初始化:
1:可以只給部分賦值
int a[5] = {1,2}; 剩下的自動賦值為0
2:如果給全部元素賦值,那麼在陣列定義時可以不給出陣列長度
int a[] = {1,2,3,4};
二維陣列:
在記憶體中是連續排列的,按行排列。
初始化:
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};
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行初值} };
同樣需要注意的是,使用者並不需要定義陣列的長度,因此在資料型態後面里並不必填寫任何的內容。此外,在大括弧內還有幾組大括弧,每組大括弧內的初值會依次賦值給陣列的第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;".以此類推.
使用多維陣列時,輸入、輸出的方式和一、二維陣列相同,但是每多一維,巢狀迴圈的層數就必須多一層,所以維數越高的陣列其複雜度也就越高。
不要被自己感動。沒用
衹有你足夠與眾不同,你才能足夠被需要。
自以為是是人類的原罪。
加油哦!