zoukankan      html  css  js  c++  java
  • 数组用法以及引用类型和值类型

     1. 数组的特点:
    a. 可以存储多个数据.
     b. 存储的这多个数据的类型必须是相同的. 在声明的时候指定元素的类型.
     c. 数组的长度是固定的, 在声明的时候要求必须指定数组的长度,一旦指定 这个长度就无法更改

     2. 什么时候要使用数组
     当我们有1组(这1组中有多少个数据我很确定)数据类型相同的数据需要存储的时候.我们就可以使用数组来存储.
     a. 存储的数据的类型相同.
     b. 存储的数据的个数确定.
     
     
     3. 声明数组的语法.
     元素的类型[] 数组的名称 = new 元素的类型[数组的长度];
     int[] arr = new int[3];
     a. 赋值符号左右两边的元素的类型要一致.
     b. 在声明数组的时候 必须要指定数组的长度.
     
     声明1个数组.
     int[] arr = new int[3];
     int[] 其实是1个数据类型. 读作int数组. 特别强调: int和int[]是完全不同的两种数据类型. 他们之间不兼容.
     arr是1个变量.
     new int[3];是1个表达式. 这个表达式的结果通过赋值符号赋值给arr变量.


    4. 数组是如何在内存中开辟空间的()
     int[] arr = new int[3];
     a. 先在内存中声明1个int[]类型的变量arr
     b. 将这个arr变量划分成3个小空间. 划分成多少个小空间 是根据数组的长度来决定的.
     c. 这3个小空间的类型是int类型 小空间的类型是根据声明数组的时候 指定的元素的类型来决定的.
     
     数组中真正用来存储数据的是 这1个1个的小空间.
     
     5. 几个术语:
     元素:
     索引/下标
     数组的长度
     

     6. 为数组中的元素赋值.
     往数组中存储数据的时候.我们不是把数据存储给数组. 而是把数据存储给数组中的元素.
    首先你要确定你想要把数据赋值给数组中的那1个元素. 通过下标来确定
     数组的名称[元素的下标] = 数据;
     
     注意两点:
     a. 为数组的元素赋值的时候 数据的类型要和元素的类型一致.
     元素的本质其实就是1个普通类型的变量.
     b. 下标不能越界. 索引超出了数组界限。
     数组的下标的范围: 0 ----> 数组的长度-1
     
     7. 修改数组中的元素的值.
     通过索引器定位元素 重新赋值即可.
     元素的本质实际上是1个普通类型的变量 其中只能存储1个值.当我们重新为其赋值的时候.
     如果这个元素中已经有值 那么新值会将老值覆盖掉.
     

     8. 取出元素的值.
     a. 我们要取的是数组的元素的值.而不是数组的值.
     当我们直接打印1个数组的时候 打印出来的是这个数组变量的类型.
     
     b. 取出数组中元素的值.
     1). 要确定你要取那1个元素的值 通过下标来确定.
     
     c. 取值的时候 所以不能越界.
     
     9. 数组的元素的默认值
     如果我们声明1个数组 没有为这个数组的元素赋值
     那么这个数组的元素是有值的.
     
     如果元素的类型是数值类型: 0
     char '' 'a'
     bool false
     string null
     
     10. 任意的数据类型都有数组.
     
     11. 数组的长度可以是1个,那么这个数组就只能存储1个数据.
     数组的长度也可以为0个. 那么这个数组1个数据都存储不了 这个数组就没有任何意义了.

     12. 数组的遍历
     数组名.Length可以得到这个数组的长度.
     思路: 将0到数组的长度-1 中的每1个整数遍历出来 当做数组的下标.
     for(int i=0;i<arr.Length;i++)
     {
     i是下标,所以要取出元素的值的话 要以i作为数组的下标才可以取出来.
     arr[i];
     }
      使用foreach来遍历数组中的元素.
     语法
     foreach(数据类型 变量名 in 数组的名称)
     {
     //循环体;
     }
     迭代变量:
     遍历的规则: 将数组中的元素 挨个的从第0个开始 依次的赋值给迭代变量. 赋值给迭代变量以后 就执行循环体.
    循环体执行完毕之后,再将下1个元素赋值给迭代变量. 当将最后1个元素的值赋值给迭代变量以后 并执行完循环体
     就自动的结束循环.
     
     
     需要注意的地方:
     a. 迭代变量的类型要和数组中的元素的类型一致.
     b. foreach遍历出来的迭代变量的值 直接就是元素的值. 不是下标.
     c. 迭代变量的名称随便定义.
     
     for循环遍历数组 与 foreach遍历数组的 区别
     a. for循环遍历出来的是元素的下标. 如果要取元素的值的话 要将这个i当做数组的下标.
     foreach 遍历出来的直接就是元素的值. 迭代变量的值 直接 就是元素的值.
     b. for循环可以"挑三拣四" 可以从指定的元素开始遍历.
     foreach只能"从一而终" 只能把元素从头遍历到尾.
     c. for循环遍历出来的元素可以修改其值.
     而foreach不能修改迭代变量的值.
     
     其实任意的时刻都可以使用for循环来遍历.
     当我们遍历数组的时候,要从头遍历到尾.并且不会更改元素的值 这个时候可以使用foreach来遍历.

    选择排序与冒泡排序

    选择排序:

                   for (int i = 0; i < arr.Length - 1; i++)
                {
                    for (int j = 0; j < arr.Length - 1 - i; j++)
                   {
                       if (arr[j] > arr[j + 1])
                       {
                            arr[j] = arr[j] + arr[j + 1];
                            arr[j + 1] = arr[j] - arr[j + 1];
                            arr[j] = arr[j] - arr[j + 1];
                        }
                    }
                }

    冒泡排序:

               int[] arr = { 12, 11, 56, 18, 19, 30, 45, 12, 34, 5, 56, 7, 68, 89, 90, 13 }; 
                for (int i = 0; i < arr.Length - 1; i++)//外层循环控制比较的轮数.
                { 
                    //每1轮是如何比较的呢?
                  //拿下标为i的元素  和 后面的每1个元素进行比较.i+1-----arr.Length-1
                    for (int j = i + 1; j < arr.Length; j++)//这里这个循环 将i+1 到最后1个元素的值全部遍历出来 。
                   {
                       if (arr[i] < arr[j])
                        {
                            int temp = arr[i];
                            arr[i] = arr[j];
                            arr[j] = temp;
                        }
                    } 
                } 
    
                //foreach (int i in arr)
                //{
                //    Console.WriteLine(i);
                //}
  • 相关阅读:
    c++趣味之难以发现的bug
    解决html5 canvas 绘制字体、图片与图形模糊问题
    c++趣味之shared_ptr额外好处
    标准mysql(x64) Windows版安装过程
    解决Chrome与jQuery菜单兼容问题
    在Linux与Windows上获取当前堆栈信息
    TypeScript技巧集锦(陆续更新)
    c++趣味之变量名,颠覆所有教科书的VisualStudio
    Web前端:博客美化:三、右上角的Github Ribbon
    Web前端:博客美化:二、鼠标特效
  • 原文地址:https://www.cnblogs.com/sabry34126/p/3793808.html
Copyright © 2011-2022 走看看