陣列宣告和賦值總結
阿新 • • 發佈:2019-01-05
宣告陣列
宣告陣列變數僅有一種語法,即:資料型別[] 變數名,比如:
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}; // 語法正確