【C#基础】数组和集合

    xiaoxiao2021-03-26  29

    枚举

    枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。(个人理解:枚举是提前声明好的一组具有特定值的数据类型,用于选择的场合,有程序提供的选项供用户选择时使用,相当于控件中的listbox)例如在输入信息中人的性别只有男和女,为避免不必要的错误,提前枚举出性别的选项:Public enum Gender {男,女}

    枚举的优点: 1、枚举可以使代码更易于维护,有助于确保给变量指定合法的、期望的值。 2、枚举使代码更清晰,允许用描述性的名称表示整数值,而不是用含义模糊的数来表示。 3、枚举使代码更易于键入。在给枚举类型的实例赋值时,VS.NET IDE会通过IntelliSense弹出一个包含可接受值的列表框,减少了按键次数,并能够让我们回忆起可能的值

    4.使数据规范,便于统计和分类,防止出现“同意多词”的现象,防止数据的乱输入。

     

    结构:public struct Person{public string _name; publicint _age;public gender _gender}  一次性声明多个不同的变量时使用。

    数组(array)

    定义:存储同一种数据类型的多个元素的容器,Array 类是支持数组的语言实现的基类。数组中通过“索引”或“下标”来区分数组元素,下标从0开始,数组的声明格式:类型[ ] 数组名

    数组的初始化:是指为数组分配内存的过程。

    A:动态初始化

    只给长度,系统给出默认值

    举例:int[]arr = new int[3];

    B:静态初始化

    给出值,系统决定长度

    举例:int[]arr = new int[]{1,2,3};

    简化版:int[]arr = {1,2,3};

    对数组的遍历:使用foreach循环,数组的遍历就是对数组的所有元素逐个进行访问。Foreach(类型 变量名 in 数组名){循环体};使用for循环,for(int i=0,i< array.length,i++){ S+= array [i]; }

    比较:foreach语句总是遍历整个数组,如果只需要遍历某个部分,或者反向遍历,使用for循环;foreach语句的循环只是访问数组中的每个元素的值,作为一个只读属性,如果要写入或者修改,或者需要知道元素对应的索引则需要for语句。

    for循环遍历

    public static void printArray(int[] arr) { for(int x=0; x<arr.length; x++) { System.out.println(arr[x]); } }

    数组的逆序输出:

    方式1: public static void reverse(int[] arr) { for(int x=0; x<arr.length/2; x++) { int temp = arr[x]; arr[x] = arr[arr.length-1-x]; arr[arr.length-1-x] = temp; } } 方式2: public static void reverse(int[] arr) { for(int start=0,end=arr.length-1; start<=end; start++,end--) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; } }

    字符串的逆序输出:

    public static void main(String[] args) { //方法1 用reverse方法反转 StringBuffer sb=new StringBuffer(); sb.append("abc"); System.out.println("反转后:"+sb.reverse()); //方法2 String str="abc"; char[] charArr = str.toCharArray(); //将字符串转换成数组 for(int i = charArr.length;i>0;i--){ System.out.print("反转后:"+charArr[i-1]); } }

    注意:数组需要在堆内存开辟空间存储值,引用类型需要在堆内存运行,在堆内存的数据使用完毕后在垃圾回收器空闲时回收,值类型存放在栈内存,栈内存的数据使用完毕就消失。数组中的不同数组元素的类型有不同的默认值

    byte,short,int,long            0

    float,double                     0.0

    char'                              \u0000'

    boolean                           false

    引用类型                        null

    集合(arraylist)

    集合相当于一个容器,对于不同类型的变量的存取,使用集合。相比数组不必考虑类型和长度,声明格式:ArrayList 集合名=new arraylist( ); 添加元素:ArrayList.add=(“元素”) 数组只能存储同一类型的数据,集合可以存储不同类型。 对集合的遍历: public static void main(String[] args) { //创建集合对象 Collection c=new ArrayList(); //添加元素 c.add("zhang"); c.add("jian"); c.add("hui"); 方法1: //把集合转成数组 Object[] objs=c.toArray(); for(int x=0;x<objs.length;x++){ // System.out.println("objs[x]");//输出每个元素,实际上是输出的是地址值,需要重写tostring方法 String s=(String) objs[x];//向下转型 为string类型可以调用length()方法 System.out.println(s+"------------"+s.length()); } 方法2: //public interface Iterator<E>对 collection 进行迭代的迭代器。迭代器是遍历集合的一种方式,迭代器是依赖集合而存在的。 Iterator it=c.iterator();//获取迭代器对象 //hasNext()方法判断是否有元素 while(it.hasNext()) { String s =(String) it.next(); System.out.println(s+"------------"+s.length()); } //或者 for(Iterator it=c.iterator();it.hasNext();){ Student s=(Student)it.next();//转换成student类型,调用方法 System.out.println(s+"------------"+s.length()); } }

    Array和ArrayList的区别 Array的大小是固定的,而ArrayList的大小可根据需要自动扩充;array中一次只能获取或设置一个元素的值,而ArrayList中允许添加插入或移除某个范围的元素,array下限可以自定义,而ArrayList的下限始终为零;array可以具有多个维度(数组可以有二维和多维,但集合只能是一维的),但ArrayList只能是一维的;array位于system命名空间中,而ArrayList是提供的用于数据存储和检索的专用类,ArrayList位于system.collections命名空间中。 [] 是针对特定类型、固定长度的。 List 是针对特定类型、任意长度的。 Array 是针对任意类型、固定长度的。 ArrayList 是针对任意类型、任意长度的。

    篇幅有限,未完待续……

    转载请注明原文地址: https://ju.6miu.com/read-662358.html

    最新回复(0)