数组声明数组变量只有以下语法:数据类型[]变量名称:
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数组
81);font-family:'Helvetica Neue', Arial, 'Hiragino Sans GB', STHeiti, 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, Song, sans-serif;font-size:15px;">效果是完全一样的。数组初始化器数组初始化器是指:给数组赋值的同时,指定数组每一项的值,在很多时候,这样做可以简化我们的代码。
比如:
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}; // 语法正确