数组

十六

什么是数组?
数组是一种结构,是把相同类型的数据按有序的形式组织起来。
通俗的理解:
以苹果举例:
每个苹果都看成一个具体数据,以前是用小盒子(变量)存放,当大量使用时就会不方便,所以如果将要使用苹果全部放到某一个空间中,那么效果就会很好。
这种情况下使用数组进行存放同一种类型的数据就会非常方便。
C#中数组可以分为:
一维数组、多维数组、数组的数组
-----------------------------
数组的使用步骤:
1、声明数组(数组的类型和数组的名称)
2、创建数组(请求内存空间的分配)
3、初始化数组(给数组中每个空间放一个值)
一维数组的语法:
数据类型[] 数组名称;<-----声明一个数组对象
例如:int[] ages;//声明一组年龄的数组用于存储年龄的值
声明数组时要注意的事情
1、数据类型是C#语言中的任意数据类型
2、数组名称必须满足标识符的命名规范和变量的命名规范是相同的
数组名称 = new 数据类型[数组的长度];<----申请空间,包含多少个同类型的空间(数组长度)
ages = new int[10];<---创建整型数组对象,申请空间用于存放10个整型数据值
创建数组时要注意的事情
1、创建数组时,数组的长度不能省略,长度可以是常量、变量或表达式
2、数组的声明和创建可以合并到一起的。例如:int[] ages = new int[5];//这种写法比较常见
初始化数组
数组名称[索引] = 值;<---为数组的某个空间赋初值
int[] ages = new int[5];//声明并创建一个整型数组
ages[0] = 18;//将18 赋值给ages数组的第0个空间中
ages[1] = 20;//将20 赋值给ages数组的第1个空间中
ages[2] = 13;ages[3] = 22;ages[4] = 19;
------------------------------------------------
ages[5] = 10;//这句赋值的代码是错误的。因为ages数组只有5个空间,空间的索引值从0开始
------------------------------------------------
数组的索引从0开始因此数组的索引值一定是小于数组的长度,小一个
==============================================
一维数组的动态初始化
语法:
数据类型[] 数组名称 = new 数据类型[]{值1,值2,值3,值4,....值N};
动态初始化时数组会根据初始化值的个数来确定数组的长度。
例如:
int[] ages = new int[]{12,13,23,22,18,16};
一维数组静态初始化
语法:
数据类型[] 数组名称 = {值1,值2,值3,值4,....值N};
例如:
int[] ages = {13,15,16,8,19};
===========================
元素的默认值:
数组是一种对象类型(属于引用类型),一旦创建对象则系统默认会给出原始初始化值。
int 类型 默认值 0
float 类型 默认值 0.0f
bool 类型 默认值 false
char 类型 默认值 '\u000'(表示一个空字符)
string 类型 默认值 null(对象的默认值就是null)
================================
一维数组的访问:
数组名[索引] = 值;//为数组的指定索引的元素赋值
数组名[索引];//获取数组中指定索引的元素值
例如:
int[] ages = new int[5];
赋值:
ages[0] = 20;
取值:
int age = ages[0];//将指定索引位置的元素值取出赋给同类型的变量
=====================
数组和变量不同
数组的初始化其实是第二次赋值,变量的初始化才是真的第一次赋值
=======================
注意:
数组的长度是固定的,在C#语言中数组的长度一旦确定是不能更改的。
数组的索引一定小于数组的长度,否则会出现“索引超出了数组界限。”错误

 

十七

一维数组的遍历
遍历:就是将集合内容进行逐个的访问。(例如:课堂上的点名)
是利用循环进行的,是通过数组的索引值进行计数循环,从而达到遍历数组元素的目的。
使用for这种循环进行数组的遍历。
由于for本身是一种计数器循环所以很容易的就和数组的索引值结合,这是天然的结合。通过这种结合就可以轻松的遍历数组中的每一个元素。
for循环遍历一维数组的语法:
for(数据类型 循环变量=0;循环变量 < 数组名.Length;循环变量++){操作数组元素;}
Length:<---长度(数组中表示包含元素的个数)
int[] ages = new int[5];
此时数组的长度就是5,也就是说ages数组中可以存放5个整数。那么ages.Length就是得到ages数组的长度
------------------------
除了for循环经常用于集合的遍历外,C#还提供了foreach这种针对集合遍历的语句,方便我们对各种集合进行遍历
语法:
foreach(数据类型 循环变量 in 数组名称){语句块;}
------------------------------
一维数组的遍历
可以使用循环语句进行,但是前三种循环只能使用索引进行,foreach是专门针对集合进行遍历的结构,
foreach每次只能遍历一种数据类型的集合,其他三种遍历时只和索引有关和数组类型无关,如果数组的长度是一样则可以使用前三种循环语句结构,进行一次性同长度,不同类型的数组同时遍历。
----------------------------------
二维数组
也是数组的一种,它是一组连续的内存空间,但是方向分为横向和纵向。
因此我们常常把二维数组看成一张二维表格
-----------------------------
二维数组的声明和创建以及初始化
语法:
1、声明
数据类型[,] 数组名;//<---中(方)括号中的逗号将数组标识为二维数组。
2、创建
数组名 = new 数据类型[长度1,长度2];//<---长度一代表行的数量,长度2代表列的数量
//同时,长度1也表示二维数组中第一维的长度,长度2也表示二维数组中第二维的长度。
3、声明和创建二合一
数据类型[,] 数组名 = new 数据类型[长度1,长度2];
4、初始化二维数组
4.1 string[,] users = new string[2,2];
user[0,0] = "jack";<---第0行,第0列
user[0,1] = "sunny";<---第0行,第1列
user[1,0] = "Jhon";<---第1行,第0列
user[1,1] = "Tom";<---第1行,第1列
每个二维数组都有两个下标(索引),分别是行下标和列下标
4.2 stirng[,] = new string[,]{{"tom","rose"},{"jack","sunny"},{"mike","nancy"}};//动态初始化
这个相当于3行2列的二维数组;--->string[,] users = new string[3,2];
4.3 stirng[,] = {{"tom","rose"},{"jack","sunny"},{"mike","nancy"}};//静态初始化
--------------------------
二维数组的遍历
1、使用集合访问迭代器foreach
语法:
foreach(数据类型 循环变量 in 二维数组名 ){循环体语句;}
使用foreach循环二维数组时是不考虑数组元素的索引,它会将数组中元素从头到尾全部提取出来。
2、使用for循环遍历二维数组
二维数组有两个维度:行维度和列维度
也就是有两个索引:行索引和列索引
需要取出二维数组每一个维度的长度
数组名.GetLength(维度索引)//获取指定维度的长度
C#语言中涉及到索引则都是从0开始
如果是第一维则维度索引就不是1而是0,第二维的维度索引就不是2而是1,因为索引是从0开始
使用数组名.Rank属性得到数组的维度

posted @ 2020-06-11 19:33  丁超越  阅读(69)  评论(0)    收藏  举报