Java、C#、C++定義數組區別


(1)Java

一維數組 1) int[] a; //聲明,沒有初始化

2) int[] a=new int[5]; //初始化為默認值,int型為0

3) int[] a={1,2,3,4,5}; //初始化為給定值

4) int[] a=new int[]{1,2,3,4,5}; //同(3) int[] a=new int[5]{1,2,3,4,5}; //錯誤,如果提供了數組初始化操作,則不能定義維表達式

5) int[] a; a=new int[5]; //正確,同(2)一樣

int[] a; a={1,2,3,4,5}; //錯誤,數組常量只能在初始化操作中使用,如(3)

6) int a[]; a[0]=1; //錯誤,因為數組沒有初始化,不能賦值 a[1]=2;

二維數組 1) int[][] a; //聲明,沒有初始化

2) int[][] a=new int[2][3]; //初始化為默認值,int型為0

3) int[][] a={{1,2},{2,3},{3,4}}; //初始化為給定值 int[][] a={{1,2},{2,3},{3,4,5}}; //沒有錯,數組空間不是連續分配的,所以不要求每一維的大小相同

4) int[][] a=new int[2][]; a[0]=new int[3]; //a[0]其實就是一個數組 a[1]=new int[4]; //每一維的大小可以不一樣;

5) int[][] a=new int[][]{{1,2},{2,3},{3,4,5}}; //同(3) int[] a=new int[5]{{1,2},{2,3},{3,4,5}}; //錯誤,如果提供了數組初始化操作,則不能定義維表達式

int[][] a=new int[2][]; a[0]={1,2,3,4,5}; //錯誤,數組常量只能在初始化操作中使用

6) int[][] a=new int[2][]; a[0][1]=1; //錯誤,第二維沒有初始化,不能賦值,java.lang.NullPointerException異常

總結: 1.二維就是數組的數組,里面的數組大小不要求一樣

2.不管一維還是二維,在使用前(賦值,訪問)必須初始化,可以用new默認初始化,也可以用數組常量初始化

 

1.動態初始化:數組定義與為數組分配空間和賦值的操作分開進行; (一般用指針實現動態數組,返回數組首地址)

2.靜態初始化:在定義數字的同時就為數組元素分配空間並賦值;

3.默認初始化:數組是引用類型,它的元素相當於類的成員變量,因此數組分配空間后,每個元素也被按照成員變量的規則被隱士初始化。

(2)C#

 

數組概述

C# 數組從零開始建立索引,即數組索引從零開始。C# 中數組的工作方式與在大多數其他流行語言中的工作方式類似。但還有一些差異應引起注意。

聲明數組時,方括號 ([]) 必須跟在類型后面,而不是標識符后面。在 C# 中,將方括號放在標識符后是不合法的語法。

int[] table; // not int table[];

另一細節是,數組的大小不是其類型的一部分,而在 C 語言中它卻是數組類型的一部分。這使您可以聲明一個數組並向它分配 int 對象的任意數組,而不管數組長度如何。

int[] numbers; // declare numbers as an int array of any size

numbers = new int[10]; // numbers is a 10-element array

numbers = new int[20]; // now it's a 20-element array

聲明數組

C# 支持一維數組、多維數組(矩形數組)和數組的數組(交錯的數組)。下面的示例展示如何聲明不同類型的數組:

一維數組:

int[] numbers; 

多維數組:

string[,] names; 

數組的數組(交錯的):

byte[][] scores; 

聲明數組(如上所示)並不實際創建它們。C# 中,數組是對象(本教程稍后討論),必須進行實例化。下面的示例展示如何創建數組:

一維數組:

int[] numbers = new int[5]; 

多維數組:

string[,] names = new string[5,4]; 

數組的數組(交錯的):

byte[][] scores = new byte[5][]; 
for (int x = 0; x < scores.Length; x++)  
{ 
scores[x] = new byte[4]; 
} 

還可以有更大的數組。例如,可以有三維的矩形數組:

int[,,] buttons = new int[4,5,3]; 

甚至可以將矩形數組和交錯數組混合使用。例如,下面的代碼聲明了類型為 int 的二維數組的三維數組的一維數組。

int[][,,][,] numbers; 
初始化數組 

C# 通過將初始值括在大括號 ({}) 內為在聲明時初始化數組提供了簡單而直接了當的方法。下面的示例展示初始化不同類型的數組的各種方法。

注意如果在聲明時沒有初始化數組,則數組成員將自動初始化為該數組類型的默認初始值。另外,如果將數組聲明為某類型的字段,則當實例化該類型時它將被設置為默認值 null

一維數組

int[] numbers = new int[5] {1, 2, 3, 4, 5}; 
string[] names = new string[3] {"Matt", "Joanne", "Robert"}; 

可省略數組的大小,如下所示:

int[] numbers = new int[] {1, 2, 3, 4, 5}; 
string[] names = new string[] {"Matt", "Joanne", "Robert"}; 

如果提供了初始值設定項,則還可以省略 new 運算符,如下所示:

int[] numbers = {1, 2, 3, 4, 5}; 
string[] names = {"Matt", "Joanne", "Robert"}; 

多維數組

int[,] numbers = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} }; 
string[,] siblings = new string[2, 2] { {"Mike","Amy"}, {"Mary","Albert"} }; 

可省略數組的大小,如下所示:

int[,] numbers = new int[,] { {1, 2}, {3, 4}, {5, 6} }; 
string[,] siblings = new string[,] { {"Mike","Amy"}, {"Mary","Albert"} }; 

如果提供了初始值設定項,則還可以省略 new 運算符,如下所示:

int[,] numbers = { {1, 2}, {3, 4}, {5, 6} }; 
string[,] siblings = { {"Mike", "Amy"}, {"Mary", "Albert"} }; 

交錯的數組(數組的數組

可以像下例所示那樣初始化交錯的數組:

int[][] numbers = new int[2][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} }; 

可省略第一個數組的大小,如下所示:

int[][] numbers = new int[][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} }; 

-或-

int[][] numbers = { new int[] {2,3,4}, new int[] {5,6,7,8,9} }; 

請注意,對於交錯數組的元素沒有初始化語法。

 

(3)C++

 

1.一維數組的定義與初始化
1.1定義一維數組
int a[3];
該定義表示一個整型數組,共有3個元素,下標分別為[0],[1],[2]。
1.2一維數組初始化
可以用下面幾種方式進行初始化。
①在定義數組時分別對數組元素賦初值。
int a[3]={0,1,2};
②只給一部分元素賦值。
int a[3]={0,1};
這表示只給前面兩個元素賦初值,后面的元素值默認為0。
③在對全部數組元素賦初值時,可以不指定數組長度。
int a[3]={0,1,2};
可以寫成
int a[]={0,1,2};
在第二種寫法中,花括號中有3個元素,系統就會據此自動定義a數組的長度為3。但若被定義的數組長度與提供初值的個數不相同,則數組長度不能省略。
2.二維數組的定義與初始化
2.1定義二維數組
int a[3][4];
改定義表示一個3x4(3行4列)的整型數組。可以把該二維數組看作:
|---a[0]:a[0][0],a[0][1],a[0][2],a[0][3]
a |--a[1] :a[1][0],a[1][1],a[1][2],a[1][3]
|--a[2] :a[2][0],a[2][1],a[2][2],a[2][3]
C++中,二維數組種元素排列的順序是:按行存放,即在內存中先順序存放第一行的元素,在存放第二行元素,依次往下。
2.2二維數組初始化
可以用下面幾種方式進行初始化。
①分行給二維數組賦初值。
int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};
②將所有數據寫在一個花括號內,按數組排列的順序對各元素賦初值。
int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
③只對部分元素賦初值。
int a[3][4]={{1},{2},{4}};
1 0 0 0
2 0 0 0
4 0 0 0
int a[3][4]={{1},{0,2},{0,0,4}};
1 0 0 0
0 2 0 0
0 0 4 0
int a[3][4]={{1},{3,2}};
1 0 0 0
3 2 0 0
0 0 0 0
int a[3][4]={{1},{},{9}};
1 0 0 0
0 0 0 0
9 0 0 0
④如果對全部元素賦初值,則定義數組時對第一維長度可以不指定,但第二維長度必須指定。
int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
可以寫成
int a[][4]={0,1,2,3,4,5,6,7,8,9,10,11};
在定義時也可以對部分元素賦初值而省略第一維的長度,但應分行賦初值。
int a[][4]={{0,0,1},{},{0,9}};
0 0 1 0
0 0 0 0
0 9 0 0


免責聲明!

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



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