1. 程式人生 > >陣列宣告和賦值總結

陣列宣告和賦值總結

宣告陣列

宣告陣列變數僅有一種語法,即:資料型別[] 變數名,比如:

string[] strs;

這句程式碼應該這樣理解:

  • 變數strs的型別是陣列
  • strs的每一項存放的資料是string
  • 變數strs還未被賦值

陣列的賦值

我們知道,變數的三要素是:資料型別、變數名、值,看以下程式碼:

int[] nums;

這句程式碼,已經具備了變數的型別(int[])、變數名(nums),但還沒有值。

給陣列的賦值語法是:陣列變數名 = new 資料型別[長度];

比如,給剛才定義的陣列nums賦值,可以是如下的程式碼:

int[] nums;
nums = new int[5]; //給變數nums賦值為長度為5的int陣列

值得注意的是,賦值語法中的資料型別必須和宣告時的資料型別完全一致,因為它們都表示的是同一個意思:陣列中每一項的型別。

根據之前變數的知識,變數可以在宣告的時候直接賦值,因此,也可以使用下面的程式碼,在宣告陣列時對它賦值:

int[] nums = new int[5]; //宣告一個數組nums,並給它賦值為長度為5的int陣列

效果是完全一樣的。

陣列初始化器

陣列初始化器是指:給陣列賦值的同時,指定陣列每一項的值,在很多時候,這樣做可以簡化我們的程式碼。

比如:

int[] nums;
nums = new int[3];
nums[0] = 2;
nums[1] = 5;
nums[2] = 1;

string[] strs = new string[2];
strs[0] = "Hello";
strs[1] = "World";

上面的這段程式碼定義了兩個陣列,並分別給陣列賦了值,不僅如此,還為陣列每一項賦了值。

使用陣列初始化器,可以簡化上面的程式碼如下:

int[] nums; //宣告陣列
nums = new int[3]{2, 5, 1}; // 使用陣列初始化器,給陣列賦值的同時指定它每一項的值

// 使用陣列初始化器,給陣列賦值的同時指定它每一項的值
string[] strs = new string[2]{"Hello", "World"};

程式碼是不是簡潔了很多呢?只要是給陣列賦值的時候,都可以使用陣列初始化器。

值得注意的是,在使用陣列初始化器時,陣列長度必須和初始化的數量相同,比如,以下的程式碼都是錯誤的:

int[] nums1 = new int[3]{2,3};//陣列長度為3,但初始化器中只有兩項
int
[] nums2 = new int[1]{2,3,1};//陣列長度為1,但初始化器中有3項

更好的做法是,在使用陣列初始化器時,不去指定陣列長度,讓編譯器完成對陣列長度的計算,比如:

//不指定陣列長度,編譯器會根據初始化器中的數量自動填充陣列長度
int[] nums1 = new int[]{2,3};// 編譯器會將該陣列的長度設定為2
int[] nums2 = new int[]{2,3,1};// 編譯器會將該陣列的長度設定為3

陣列的初始化器還有一種更加簡化的寫法,比如,上面的程式碼可以簡化如下:

int[] nums1 = {2,3};
int[] nums2 = {2,3,1};

效果是完全一樣的,只不過,這種極簡的做法,僅能存在於宣告陣列時的初始化,下面的例子很好的說明了這一點:

int[] nums1 = {2,3}; // 語法正確

int[] nums2;
nums2 = {2,3,1}; //語法錯誤,極簡的初始化器必須在宣告時使用

int[] nums3 = new int[]{2,3};//語法正確

int[] nums4;
nums4 = new int[]{2,3,1}; // 語法正確