【小雨学编程之C#】18.7 复杂数据类型-数组( 二 )


【小雨学编程之C#】18.7 复杂数据类型-数组
文章图片
咦?不是已经对数组初始化了吗?怎么还有赋值一说呢?这个位置怎么把初始化和赋值拆开了呢?
这时有些小伙伴会对第三种初始化方式产生疑问 , 所以在这里我们要强调一下 , 数组的初始化 , 和简单数据类型的初始化是有区别的 , 简单数据类型的初始化 , 比如:
inti=1;
意思是声明了一个整形的变量 , 同时给这个变量赋值1 , 这个赋真实值就是对这个变量的初始化 。
但是数组就不一样了 , 对于数组来说 , 声明数组是告诉计算机 , “在程序的对应位置我们需要使用一个数组”这件事 , 就像我们说嘿!明天我们去超市买鸡蛋吧 , 一样 , 只是一件事情 。
但是数组初始化是告诉计算机 , 你要为我需要的这个数组分配多少空间 。 注意这里的初始化仅仅是分配空间而已 。
就如同卖鸡蛋的商家 , 提前给我们提供一个可以装10个鸡蛋的盒子一样 , 仅仅提供盒子而已 。
但是像数组中填真实值和向盒子中装鸡蛋一样 , 都是我们在使用这个数组 , 并不是初始化 。
4、如果数组初始化的同时给数组赋值 , 也可以不指定数组的大小 , 因为编译器会依据给赋的值 , 自动计算元素个数
int[]scores=newint[];
这种写法有简写方式
int[]scores=;
这里还需要注意最后一点 , 我们向数组中添加对应真实数据的时候 , 添加数据的格式和我们使用简单数据类型赋值的格式是一样的 。
比如初始化字符的时候
chara=‘a’;
如果初始化一个字符数组
char[]letters={'a','b','c'}
数据的调用:
那么声明并初始化数组后 , 我们怎么使用呢?
虽然我们用数组表示了一组同类型的数据元素 , 但是这也是一堆数据 , 我们怎么在数组中区分这些数据呢?这个大家不用着急 , 其实在数组初始化的时候 , 系统就自动依照我们向数组添加真实值的顺序对数组中的元素进行了编号 , 但是需要我们注意的是 , 我们生活中给事物编号是从1开始 , 但是数组编号是从0开始 , 也就是说数组中第一个元素编号0 , 第二个元素编号1
比如int[]scores=;
在这个数组中
第一个元素56的编号是0
第二个元素77的编号是1
第三个元素47的编号是2
这里的编号我们又叫做索引 , 那么我们在使用对应数组的元素的时候就直接用
数组名[索引]的方式提取对应的数据
比如我想取出score中的88这个数据 , 那么我们就使用scores[3]即可
那么这里就又引出了给数组赋值的另一种方式 , 直接使用索引给数组赋值 , 比如:
int[]scores=newint[4];
scores[0]=1;
scores[1]=2;
scores[2]=3;
scores[3]=4;
但是在这里 , 小伙伴们会经常犯一个错误 , 因为我们的索引是从0开始的 , 所以索引的最大值是数组元素个数-1 , 但是由于我们平时生活中索引计数方式和程序索引计数方式的不同 , 小伙伴们会经常错误的将程序索引的最大值当作数组元素的个数 , 也就是:
int[]scores=newint[4];我们会错误的将它的最后一个索引认为成scores[4]
那么很明显 , scores[4]是表示scores中第五个索引 , 但是在这个数组中没有第五个值 , 这时候 , 系统会抛出一个异常:
【小雨学编程之C#】18.7 复杂数据类型-数组
文章图片
就是在告诉我们 , 我们使用了错误的索引值 , 调用了不存在的元素 。 这个错误很常见 , 需要引起大家的注意!
数组会偷着初始化的同时向数组中塞默认值!