黑马程序员--.NET笔记--枚举、数组、排序、方法、变量的作用域、重载

常量:

语法:const类型常量名=常量值;

在定义时赋值,在其他地方不允许赋值。

 

枚举:

         让我们定义一种枚举类型并且在定义这种类型时我们要制定这个类型的所有值。

         语法:

                   enum自己起的类型名称{值1,值2,值3…值n};

枚举的定义:一般和类定义在同一个级别,这样在同一个命名空间下的所有的类就都可以使用这个枚举了。(方法中/类中也可以)

 

枚举的作用:1、限制用户不能随意赋值,只能在定义枚举时列举的值中选择。

1、  不需要死记每一个值是什么,只需要选择相应的值。

 

注意:定义枚举时,值不能使int类型。

         枚举类型的变量都可以强制转换成一个int类型。

         枚举的值在定义时是有一个默认编号的,编号从0开始。

 

如何把一个字符串转换成枚举类型:

       (自己定义的枚举)(Enum.Parsetypeof(自己定义的枚举),“待转换的字符串”))

 

 

为什么要用结构:

1、  比如我们上课讲的为了存储一个人的信息,要声明一组变量。当我们要存储n个人的信息时,就要声明n组变量,麻烦。

2、  存储一个人的信息的这几个变量间没有关系,容易记乱。

 

语法:

访问修饰符struct 结构名

{

           定义结构成员

}

 

         定义好一个结构后,就可以直接声明相应的变量了。

 

 

 

 

练习:

1、  定义一个结构叫MyColor,有三个成员,分别为red,green,Blue

a)        声明一个MyColor类型的变量,并对其成员赋值,使MyColor可以表示成一个红色。

2、  定义一个结构类型Person,有三个成员,分别为姓名,性别,年龄

a)        声明两个Person类型的变量,分别表示张三男18岁、小兰女16岁。

 

 

 

扩展:

         计算机中最小的单位交“位”,bit比特 0 1简写:b

         为了提高速度,把8个二进制位分成一组,那么8个二进制位叫做字节Byte简写:B

                   是计算机能够处理的最小单位。0-11111111 =255

 

         bps是网络传输速度:bit persecond

 

 

数组:可以帮我们一次声明多个同类型的变量,这些变量在内存中是连续存储的。

         数组声明语法:

         数据类型[ ]     数组名 = new类型[数组长度 ];

                   例:int [ ] score = new int [ 5 ];      int [ ] nums = {5,3,8};

         就声明了一个长度为5的数组,数组叫score

         通俗点说:就是声明了一个数组,里面包含5个int类型的变量。

         数组名叫:score 里面的5个int类型的变量叫做:数组的元素

 

借鉴java 笔记里

 

 

         如何访问数组:通过下标(索引)来访问数组:数组名[编号]

         比如,我们要向第0个元素赋一个3。可以这样写:scora [0] =3;

 

小技巧:Console.Clear(); 清屏

 

练习:

1、            一次语文测试后,老师让班长统计每一个学生的成绩并计算全班(全班共60人)的平均成绩,然后把所有的成绩显示出来。

2、            从一个整数数组中取出最大的整数。

3、            计算一个整数数组的所有元素的和。

4、             将一个字符串数组输出为|分割的形式,比如“梅西|卡卡|郑大世”

5、            将一个整数数组的每一个元素进行如下的处理:如果元素是正数则将这个位置的元素的值加1,如果元素是负数则将这个位置的元素的值减1,如果元素是0,则不变。

6、            将一个字符串数组的元素的顺序进行反转。

                   {"3","a","8","haha",""}{"haha","8","a","3"}  第i个和第length-i-1个进行交换。     求平均值,求最大值,求和。

 

第七课  复习

ASCII  http://baike.baidu.com/view/15482.htm

 

 

例子:将一个字符串数组的元素的顺序进行反转。

 

1 2 34 5 6 7 8 9

 

5个元素(2)                 6(3)

0-4                                         0-5

1-3                                         1-4

2                                            2-3

 

 

N个元素进行交换

1)  交换n/2次

2)  在一个循环中,第i个元素与第length-1-i个元素进行交换。

 

 

 

冒泡排序

         让数组中的元素两两比较(第i个与第i+1个比较),经过n(i-1)遍两两比较,数组中的元素能按照我们预期的规律排序。要从大到小排序,我们进行两两比较的时候用<

         10,20,30,40,50,60,70    原始数据        7个元素

         20,30,40,50,60,70,10    第1趟    比较6次

         30,40,50,60,70,20,10    第2趟    比较5次

         40,50,60,70,30,20,10    第3趟    比较4次

         50,60,70,40,30,20,10    第4趟    比较3次

         60,70,50,40,30,20,10    第5次    比较2次

         70,60,50,40,30,20,10    第6次    比较1次

        

思想:

也就是n个数需要排n-1

       t趟比较的次数为:n-t

 

       i = 0              第一趟

       i = 1              第二趟

       趟数:i+1   t=i + 1

for (intj = 0;j < n –i – 1;j + +)     for (int i = 0;i < 10; i ++)

 

 

知识扩展:(排序算法)http://baike.baidu.com/view/297739.htm

 

方法(函数)介绍

1、  函数就是将一堆代码进行重用的一种机制。函数就是一段代码,这段代码可能有输入的值(参数),可能会返回值。一个函数就像一个专门做这件事的人,我们调用它来做一些事情,他可能需要我们提供一些数据给它,它执行完成后可能会有一些执行结果给我们。要求的数据就叫参数,返回的执行结果就是返回值

2、  strings = Console.ReadLine()就是一个有返回结果的函数;

Console.WriteLine(“hello”);就是一个有执行参数的函数,只有告诉WriteLine被打印的数据它才知道如何打印; int i =Convert.ToInt32(“22”)则是一个既有参数又有返回值的函数。

3、  有了函数写代码就像拼积木,C#中的各种各样的技术其实就是通过for、if等这些基础的语法将不同的函数按照一定的逻辑组织起来。

4、  功能:用来复用代码的。当我们在一个程序中反复的写了同样的代码,那一般情况下,我们可以把需要写的代码定义在一个方法中,用的时候只需要调用就行了。

定义方法的语法:

public

[访问修饰符][static]返回值类型方法名([参数])

{

         方法体;

}

        

         方法命名规则:方法名开头大写,参数名开头小写,参数名、变量名要有意义。

         方法的调用:对于静态方法,如果在同一个类中,直接写名字调用就行了。

         return 可以立即退出本方法。

 

 

注意:      

1、             方法一般要定义在类中。

2、             如果方法没有返回值,则返回值类型写void

3、             如果方法没有参数,()不能省略。

 

方法的调用:如果是静态方法(由static修饰的)则使用 类名.方法名();

在类中调用本类的方法,可以只写方法名();

 

 

变量的作用域

 

在方法中定义的变量称为局部变量,其作用域从定义开始,到其所在的大括号结束为止。

 

当被调用者想得到调用者方法中的变量时,则可以让调用者通过参数的形式给被调用者。

 

[访问修饰符][static]返回值类型方法名([参数])

{

         方法体;

}

 

如:

 


在方法名后面的括号内定义变量,叫做定义这个方法的参数。这里定义的变量用于接收调用者传过来的数据。

 

注意:如果一个方法一旦有参数,那么调用者就必须传参数,并且传参数的个数与对应位置上的类型必须一致。

 

                   int.Parse(string);   转换方法

 

当调用者想访问我们方法中的变量时,可以通过返回值返回。

例如:

         strings = Console.ReadLine();

         inti = Convert.ToInt32(“22”);

为什么方法前面能够定义一个变量收到方法的值,是因为在方法中使用了返回值。

只要在方法中返回了值,那么在调用方法中,前面就应该用一个变量来接收方法的返回值。

注意:一个方法只能有一个返回值。

 

一旦一个方法有返回值,那么在这个方法体重,就必须通过retrun语句返回一个值,并且这个值要与返回值类型是相同的。

         语法: return返回值;

 

当形参是数组的时候,我们传数组名。

 

练习:

1、             读取输入的整数,定义成方法多次调用(如果用户输入的是数字,则返回,否则提示用户重新输入)

2、             还记得学循环时做的那道题吗?只允许用户输入y或n,请改成方法。

3、             查找两个整数中的最大值:int Max(int i1,int i2)

4、             计算输入数组的和:intSum(int[ ] values)

 

 

 

第八课    

         一个变量一旦定义在方法外,类的里面,叫做类的字段这个变量就可以被本类的所有方法所访问。但是要注意,静态方法只能访问静态字段。

 

const修饰的常量不能定义静态。

 

 

方法重载

 

思考:(思考很重要!!!)

1、  既然Console.WriteLine()是方法,那么为什么WriteLine的参数可以是字符串类型,也可以是数字类型,还可以是布尔类型char类型呢?

2、  为什么要有方法的重载?

 

 

什么叫方法重载:

         一般在同一个类中,方法名相同,并且方法的参数的个数不同或者对应位置上的类型不同,才能构成方法的重载。

 

注意:方法重载和返回值没有关系。

 

思考:

         方法只能返回一个值,当需要返回多个值时怎么办?

         例:

                   写一个方法,计算一个int类型数组中每个元素的总和和最大值与最小值?

 

 

out

 

通过参数来反值:

 

如上代码

实现步骤:

1、  在方法的参数类型前加out那么传参数的时候,也必须在number前加out表明这个参数不是传入的,而是用来传出值的。

2、  如果参数是以out形式传入的,那么在传入前可以不赋初值。

3、  在方法中对于由out修饰的参数,必须赋值,并且必须在使用前赋值。

 

练习:

1、  写一个MyTryParse方法,要求用户传入一个字符串,如果这个字符串能转换成int类型,则方法返回true,并且转换后的int类型数据通过方法的参数传出。如果字符串不能转换成int类型,则方法返回false,那么out传出的参数将没有意思,在方法中随意赋个值就行了。

 

 

out   用于传出值,在方法中必须对out修饰的参数进行赋值。

ref    可以理解成是双向的,即可以传入,又可以传出。

在传参数的过程中,如果参数有out或ref修饰的话,那么改变方法中的参数变量的值,调用者方法中变量的值也会相应改变。

 

 

方法的练习:

1、  重复让用户输入一个数,判断该数是否是质数,输入q结束?(质数是判断用方法来实现)

2、  将一个字符串数组输出为 |分割的形式,比如“梅西|卡卡|郑大世”(用方法来实现次功能)

3、  用方法实现找出一个int类型数组中最大值和最小值

 

做题思想:要先有思路再转换成程序,不要光想老师的代码是怎么写的。要自己想为什么,这些代码有哪些功能。

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值