数组赋值
声明数组
声明数组变量仅有一种语法,即:数据类型[] 变量名,比如:
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}; // 语法正确
相关阅读
分析:如果直接输出未初始化的数组元素值,以观察未初始化的数组,实现方法代码如下所示: #include<stdio.h> #define SIZE 10 int main(
在编写Linux下的网络程序时,使用了sockaddr_in结构,在头文件中声明了#include <sys/socket.h>,系统仍不承认sockaddr_in结构.因为代
1.定义数组是一种数据结构,用来存储同一类型值的集合。通过一个整型下标可以访问数组中的每一个值。例如:如果a是一个整型数组,a[i]
Python---copy()、deepcopy()与赋值的区别
copy()与deepcopy()之间的主要区别是python对数据的存储方式。首先直接上结论:—–深复制,即将被复制对象完全再复制一遍作为独立的