数组概念和定义

1. 数组:
 作用: 用于存储多个数据.多个数据之间和平共处 不会你干掉我 我干掉你
 数组: 数据的组合. 可以存储1组数据 也就是多个数据.
 特点: a. 数组中可以存储多个数据.
 b. 数组中存储的多个数据的类型务必要相同. 在创建数组的时候指定.
 c. 数组虽然是用来存储多个数据.但是数组的容量固定的. 在创建数组的时候指定数组可以存储多个数据.
 
 2. 创建数组
 a.准备工作
 要确定这个数组可以存储什么类型的数据.
 要确定这个数组到底可以存储多少个数据.
 b.创建数组的语法
 存储的数据的类型[] 数组的名称 = new 存储的数据的类型[数组可以存储的数据的个数];
 int[] arr = new int[3];
 表示我们创建了1个数组 这个数组的名字叫做arr
 这个数组可以存储3个数据
 这3个数据的类型必须是int类型.
 
 c. 根据我们的分析.
 int[] arr = new int[3];
 int[] 其实是1个数据类型 读作int数组.
 arr其实是1个变量.
 new int[3] 是变量arr的值.
 
 3. 数组是如何在内存中开辟空间的.
 int[] arr = new int[3];
 声明了1个int[]类型的变量arr,
 然后将这个数组变量划分成了3个小空间.
 每1个小空间的类型是int类型.
 这些小空间就是用来存储数据的.
 
 将数组变量划分成多少个小空间 是根据在声明数组的时候后面的中括弧中的数字来决定.
 每1个小空间的类型 是根据在创建数组的时候 new后面的类型来决定的.
 
 4. 关于几个术语:
元素: 数组中的1个1个的小空间.
 索引/下标: C#会为每1个元素编1个号码,这个号码是int类型的 从0开始 依次递增.
 我们就把这个号码叫做元素的下标/索引
 数组的长度: 就是数组可以存储的数据的个数.
 
 创建数组的语法:
 元素的类型[] 数组的名称 = new 元素的类型[数组的长度];
 
 8. 往数组中存储数据.
 从语法的角度我们不能直接给数组赋值 像下面这样
 int[] arr = new int[3];
 arr= 12;//这样是不行滴.
 12是1个int类型 arr是int[]类型 他们类型不相同也不兼容.
 
 从情理的角度来讲:
 我们不是要把值赋值给数组 而是要把值赋值数组中的元素.
 
 那么如何将值赋值给数组的元素呢?
 a. 数组中有很多元素,你必须要确定你希望将数据赋值给那1个元素.
 通过下标来确定.
 b. 为元素赋值的语法.
 数组的名称[元素的下标] = 数据;
 数组的名后面的中括弧.叫做索引器.
 arr[0]=100; 表示将100这个数据赋值给arr数组中下标为0的元素.
 c. 注意
 1). 为元素赋值的时候.数据的类型要和元素的类型一致或者满足自动类型转换的条件.
 2). 索引超出了数组界限。 数组的长度是固定的. 元素的下标0--->长度-1
 所以我们在通过索引器赋值的时候 下标不能越界 否则就会报错.
 
5. 深度解析数组的元素
 a. 数组中的元素到底是个什么东西?
 在数组这个大空间中 再开辟小空间. 这个小空间仍然有类型.
 
 b. 所以元素的本质其实是1个普通类型的变量.
 大坑中有小坑.真正存储数据的是小坑.
 数组中真正存储数据的是元素.
 
 c.所以数组虽然可以存储多个值,但是数组的元素仍然只能存储1个值.
 当为数组的元素赋值的时候 如果之前元素中就已经有值 那么新值就会将老值覆盖掉.
 
 6. 如何取出数组中的元素的值.
 a. 我们希望取的是数组的元素的值 而不是 数组的值.
 所以如果我们直接打印数组的名称的话.那么出来的不是我们想要的元素的值.
 而是这个数组的类型.
 
 b. 取出数组的元素.
 1). 数组中有那么多的元素 你要取那1个? 通过下标来确定.
 2). 取出数组中的指定的元素的值.
 数组的名称[元素的下标]
 
7. 更改数组中的元素的值.
 通过下标确定元素 重新赋值就可以了.
 int[] arr = new int[3];
 arr[0]=100;
 arr[0]=200;
 
 
 8. 任意的数据类型都有数组.
 在声明的时候. 赋值符号 左右两边的 元素的类型必须一致
 数组在声明的时候 一旦确定了元素的类型 那么只能往其中存储这样的数据.
 
 9. 在声明数组的时候 必须指定数组的长度. 数组1旦创建 那么这个数组中能存储的数据的个数就固定.
 无法改变.
 
 
 10. 当我们声明1个数组,如果没有为这个数组中的元素赋值,
 那么这些元素是有默认值的,
 如果元素的类型是数值类型 那么默认值是0.
 如果元素的类型是string类型的 那么默认值是null.
 如果元素的类型是char类型的,那么默认值是'\0' 代表字符'a'
 如果元素的类型是bool类型的 那么默认值是false
 
 11. 遍历数组中的每1个元素.
 a. 使用for循环,将0到数组的长度-1 之间的每1个整数遍历出来 当做数组的下标.
 得到数组的长度.
 数组的名称.Length 就可以得到这个数组的长度.
 
 for(int i=0;i<arr.Length;i++)
 {
 arr[i] 就是每1个元素的值.
 }
 
 11. 数组初始化器: 允许我们在声明数组的同时就为数组的元素赋值.
 int[] arr = new int[3] { 10, 20, 30 };
 1). 大括弧中的元素的值 必须和 元素的类型相同.
 2). 大括弧中的元素的值的个数 必须和 数组的长度相同. 不能多1个也不能少1个.
 
 int[] arr = new int[] { 10, 20, 302, 34340, 4560, 560, 570, 60, 708, 12 };
 可以不写数组的长度 那么这个时候 数组的长度就根据大括弧中的数据的个数来自动确定.
 
 int[] arr = { 10, 20, 30, 405, 6, 70, 780, 8 };
 这样也可以 不写new int 这样的话 arr数组的长度根据大括弧中的数据的个数来自动确定.

案例:

//输入班级的人数. 然后接收每1个同学的成绩. 输入完毕之后 。将不及格的成绩打印出来.
            Console.WriteLine("请输入班级的人数:");
            int num = int.Parse(Console.ReadLine());
            //声明1个数组 用来存储同学们的成绩.
            int[] scores = new int[num];
            //循环录入每个同学的成绩. 将成绩存储在数组中.
            for (int i = 0; i < num; i++)
            {
                Console.WriteLine("请输入第{0}个同学的成绩:",i+1);
                scores[i] = int.Parse(Console.ReadLine());
            }
            //将不及格的成绩现实出来.
            Console.WriteLine("不及格清单****************");
            for (int i = 0; i < scores.Length; i++)
            {
                if (scores[i] < 60)
                {
                    Console.WriteLine(scores[i]);
                }
            }

 

posted @ 2014-06-17 23:59  海域公園  阅读(219)  评论(0编辑  收藏  举报