Java數組與C/C++數組的區別


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;".以此類推.
使用多維數組時,輸入、輸出的方式和一、二維數組相同,但是每多一維,嵌套循環的層數就必須多一層,所以維數越高的數組其復雜度也就越高。

不要被自己感動。沒用
只有你足夠與眾不同,你才能足夠被需要。
自以為是是人類的原罪。
加油哦!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM