




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
变量与表达式1第1页,课件共72页,创作于2023年2月本章要点变量的命名、类型以及赋值的方法表达式与运算符的优先级值类型与引用类型字符串的定义与使用2第2页,课件共72页,创作于2023年2月2.1变量变量代表了存储单元,每个变量都有一个类型。这决定了这个变量可以存储什么值。可以通过赋值语句的操作来改变变量的值。使用变量的一条重要原则是:
变量必须先定义后使用C#数据类型大小示例int有符号的32位整数intrating=20;float32位浮点数,精确到小数点后7位floattemperature=40.6F;byte无符号的8位整数bytegpa=2;short有符号的16位整数shortsalary=3400;long有符号的64位整数longpopulation=23451900;bool布尔值,true或falseboolIsManager=true;stringUnicode字符串stringcolor=“Orange”char单个Unicode字符chargender=‘M’;3第3页,课件共72页,创作于2023年2月2.1.1变量的声明变量的声明采用如下的规则:
typename;
其中type是变量的类型,name是变量的名称。例如:
inta;doubleb;doubled=2.4;strings="helloCSharp";boolb1=true,b2=false;4第4页,课件共72页,创作于2023年2月2.1.2变量的命名基本的变量命名规则如下:变量名的第一个字符必须是字母、下划线("_")或者"@"。除去第一个字符外,其余的字符可以是字母、数字、下划线的组合。不可以使用对C#编译器而言有特定含义的名字(即C#语言的库函数名称和关键字名称)作为变量名,如using、namespace、struct等等。此条命名规则其实在写程序的时候系统会自动提示你的错误的,所以不必过于担心。例如:
345abcclassw-d-m×例如:
wdm_myVariableVAR√5第5页,课件共72页,创作于2023年2月C#对于大小写字母是敏感的,所以在声明以及使用变量的时候要注意这些,例如Variable、variable、VARIABLE是3个不同的变量。在变量的命名过程中,命名遵循一定的规则是必须的。在.NETFramework名称空间中有两种命名约定,分别为PascalCase和camelCase。它们都应用到由多个单词组成的名称中,并指定名称中的每个单词除了第一个字母大写外,其余字母都是小写。在camelCase中,还有一个规则,即第一个单词须以小写字母开头。6第6页,课件共72页,创作于2023年2月下面是PascalCase变量命名的举例:
AgeSumOfAppleDayOfWeek7第7页,课件共72页,创作于2023年2月下面是camelCase变量命名的举例:agesumOfAppledayOfWeek
Micorsoft建议:对于简单的变量,使用camelCase规则,而比较高级的命名则使用PascalCase规则。8第8页,课件共72页,创作于2023年2月2.1.3变量的种类在C#语言中,我们把变量分为七种类型,分别是:静态变量(StaticVariables)非静态变量(InstanceVariables)实例变量数组变量(ArrayVariables)值参数(ValueParameters)引用参数(ReferenceParameters)输出参数(OutputParameters)局部变量(LocalVariables)9第9页,课件共72页,创作于2023年2月classmyClass{inty=2;publicstaticintx=1;boolFunction(int[]s,intm,refinti,outintj){intw=2;j=x+y+i+w;}}
上面的代码中,x是静态变量,y是非静态变量,s[0]是数组变量,m是值参数,i是引用参数,j是输出参数,w是局部变量。
10第10页,课件共72页,创作于2023年2月非静态变量不带有static修饰符声明的变量称为实例变量(非静态变量)。如:intS=2;针对类中的非静态变量而言,一旦一个类的新的实例(对象)被创建,直到该实例不再被应用从而所在空间被释放为止,该非静态变量将一直存在。如:XiyoujiRenwu类
XiyoujiRenwuzhubajie=newXiyoujiRenwu();XiyoujiRenwusunwukong=newXiyoujiRenwu();通过对象名调用,如zhubajie.S11第11页,课件共72页,创作于2023年2月静态变量带有static修饰符声明的变量为静态变量。一旦静态变量所属的类被装载,直到包含该类的程序运行结束时,它将一直存在。使用静态变量时,不需要对其所在的类进行实例化(即不使用new关键词创建对象),就可以直接通过类名来调用。如:XiyoujiRenwu类
publicstaticintS=5
调用XiyoujiRenwu.S12第12页,课件共72页,创作于2023年2月2.1.4变量类型之间的转换
在程序的设计中,常常会遇到变量的类型转换问题。比如在进行数学四则运算时,int类型的数值和double类型的数值可能混在一起进行运算,这样变量之间的类型转换就应运而生。
C#中的变量类型转换常见的主要有以下4种方式:通过隐式转换通过强制类型转换使用ToString()方法使用Convert类13第13页,课件共72页,创作于2023年2月隐式转换
隐式转换又称自动类型转换,若两种变量的类型是兼容的或者目标类型的取值范围大于源类型时就可以使用隐式转换。
隐式转换的数据源类型以及目标类型对应表
14第14页,课件共72页,创作于2023年2月强制类型转换是一种指令,它告诉编译器将一种类型转换为另外一种类型。强制转换的缺点是可能产生的结果不够精确。具体的强制类型转换语法为:
(target-type)变量或表达式;
强制类型转换
例:intx;floaty=23;x=(int)y;
如果输出y的值,结果是23.0,x的值,结果是2315第15页,课件共72页,创作于2023年2月例2.1
类型转换小例子。程序代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceImolicitConversion{classProgram
{staticvoidMain(string[]args)
{inti=2;doubled=3.4;intv1=(int)(i+d);doublev2=i+d;Console.WriteLine("v1={0},v2={1}",v1,v2);Console.ReadLine();
}}}运行结果为:v1=5,v2=5.4。16第16页,课件共72页,创作于2023年2月usingSystem;classTest{publicstaticvoidMain() { inti=10; longj=20; doublek=30D; j=i; k=j;//隐式转换
Console.WriteLine("{0},{1},{2}",i,j,k); k=30.6D; j=(long)k; i=(int)j;//强制类型转换
Console.WriteLine("{0},{1},{2}",i,j,k);
Console.Read(); }}运行结果为:10,10,1030,30,30.617第17页,课件共72页,创作于2023年2月ToString()方法主要用于将变量转化为字符串类型,该方法是C#语言中非常常见的一个方法。前面我们介绍的各种类型的变量都可以通过ToString()方法转换为String类型,例如:inti=200;strings=i.ToString();这样字符串类型变量s的值就是"200"
。ToString()
方法18第18页,课件共72页,创作于2023年2月Convert类Convert类的常见方法
19第19页,课件共72页,创作于2023年2月20第20页,课件共72页,创作于2023年2月usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceConsoleApplication2{
classProgram
{
staticvoidMain(string[]args)
{inti=67;longl;doubled=99.999;strings1,s2="17";boolb=true;s1=Convert.ToString(b)+Convert.ToString(d);Console.WriteLine("{0}+{1}->{2}",b,d,s1);l=i+Convert.ToInt64(s2);Console.WriteLine("{0}+{1}->{2}",i,s2,l);Console.ReadKey();
}
}}例2.2
使用Convert方法进行类型转换的例子。运行结果为:true+99.999->true99.99967+17->84s1=b.ToString()+d.ToString();21第21页,课件共72页,创作于2023年2月2.2常量
常量就是值在程序整个生命周期内值始终不变的量。在声明常量时,要用到const关键字。常量在使用的过程中,不可以对其进行赋值的改变,否则系统会自动报错。
语法:
<访问修饰符>const数据类型常量名=常量值;
示例:
constfloat_pi=3.14;22第22页,课件共72页,创作于2023年2月2.3表达式与运算符
C#中的表达式是由运算符、变量以及标点符号依据一定的法则组合创建起来的。运算符主要是用来定义类实例中表达式操作符的。23第23页,课件共72页,创作于2023年2月2.3.1数学运算符
C#中的数学运算符有5种:
+加法运算符
-减法运算符*乘法运算符
/除法运算符
%取余运算符上面的5种运算符都是二元的,但是“+”与“-”运算符也可以是一元的,具体用法如下:
inti=1;
i++;此时i的值就变为了2,i++这个表达式可以解释为i=i+1;24第24页,课件共72页,创作于2023年2月表达式++i与i++的含义又有不同,如下例:inti=1;intj;j=++i;
此程序运行的结果是:j=2;inti=1;intj;j=i++;
此程序运行的结果是:j=1;通过对以上2个简单程序的对比,可以得知表达式i++是先赋值,后进行自身的运算,而++i正好是相反的,先进行自身的运算,而后再赋值。
25第25页,课件共72页,创作于2023年2月取余运算符取余运算符用来求除法的余数,在C#语言中,取余运算既适用于整数类型,也同样适用于浮点型。如7%3的结果为1,7%2.5的结果为2。26第26页,课件共72页,创作于2023年2月2.3.2赋值运算符赋值运算符分为2种类型,第一种是简单赋值运算符,就是“=”号;第二种是复合赋值运算符,包含5类,具体的如下表所示:27第27页,课件共72页,创作于2023年2月2.3.3运算符的优先级
28第28页,课件共72页,创作于2023年2月2.4数据类型在C#语言中,数据类型可以分为两大部分:值类型(valuetype)和引用类型(referencetype)。
引用类型
类类型接口类型代表类型数组类型值类型
简单类型
结构类型枚举类型
29第29页,课件共72页,创作于2023年2月
值类型和引用类型的不同之处是值类型的变量值直接包含数据,而引用类型的变量把它们的引用存储在对象中。对于引用类型的变量,完全有可能让两个不同的变量引用同一个对象,这样一来,对其中一个变量的操作就会影响到被另一个变量引用的对象。对于值类型的变量而言,每一个变量有它们自己的数值,因此对其中一个变量的操作不可能影响到另外一个变量。30第30页,课件共72页,创作于2023年2月2.4.1值类型
简单类型简单类型(SimpleTypes)是直接由一系列元素组成的数据类型。C#语言给我们提供了一组已经定义好的简单类型。单纯地从计算机的表示角度来看,这些简单类型可以分为整数类型、布尔类型、字符类型和实数类型。31第31页,课件共72页,创作于2023年2月1、整数类型整数类型,顾名思义,就是变量的值为整数的值类型。整数类型特征取值类型sbyte有符号8位整数-128-127byte无符号8位整数0-255short有符号16位整数-32768-32767ushort无符号16位整数0-65535int有符号32位整数-2147483648-2147483647uint无符号32位整数0-4294967295long有符号64位整数-9223372036854775808-9223372036854775807ulong无符号64位整数0-1844674407370955161532第32页,课件共72页,创作于2023年2月2、布尔类型布尔类型是用来表示“真”和“假”的。布尔类型表示的逻辑变量只有两种取值。在C#中,分别采用true和false两个值来表示。在C语言中,用0来表示“假”,其他任何非零的值表示真。在C#中,布尔型变量只能是true或者false。例如:boolx=true;33第33页,课件共72页,创作于2023年2月3、字符类型字符包括数字字符、英文字母和表达符号等等,C#提供的字符类型按照国际标准,采用Unicode字符集。给一个变量赋值的语法为:
charmychar='M';34第34页,课件共72页,创作于2023年2月转义字符意义\’单引号符\”双引号符\\反斜线符"\"\0
空字符(Null)\a
鸣铃\b退格
\f
走纸换页\n
换行\r
回车\t
横向跳到下一制表位置\v竖向跳格(垂直制表)转义字符及其含义35第35页,课件共72页,创作于2023年2月4、实数类型实数在C#中采用三种数据类型来表示:单精度(Float)、双精度(Double)和十进制(Decimal)类型。它们的区别在于取值范围和精度不同。单精度float
在内存中占4个字节,提供7位有效数字。例:floatx,y=1.0f;(注意初值后一定要加f或者F,否则看做double类型)双精度double
占8个字节,15~16位有效数字。例:doublez;
36第36页,课件共72页,创作于2023年2月当定义一个Decimal类型变量并且给其赋值的时候,使用m或者M后缀以表示它是一个十进制类型,
例如:DecimalmyMoney=2.38m;
若在这里我们把语句改写为:
DecimalmyMoney=2.38;
那么在Decimal型变量myMoney被赋值前,它将被编译器当作双精度(Double)类型来处理。37第37页,课件共72页,创作于2023年2月结构类型把一系列相关的变量组织成为一个单一实体的过程,我们称为生成结构的过程,这个单一实体的类型就叫做结构类型,每一个变量称为结构成员。结构类型的变量采用struct来进行声明。38第38页,课件共72页,创作于2023年2月例如:
struct
Student{publicstringname;publicboolsex;publicstringaddress;publicintscore;
}
Studentp1;p1就是一个Student结构类型的变量。上面声明中的public表示对结构类型的成员的访问权限。对结构成员的访问通过结构变量名加上访问符“.”号,再跟成员的名称。="Mike";
39第39页,课件共72页,创作于2023年2月注:结构类型包含的成员类型没有限制,可以相同,也可以不同,还可以把结构类型作为另一个结构类型的成员。structBall{publicdoubleWeight;publicdoubleRadius;structmyColor{publicintRed;publicintGreen;publicintBlue;publicstringColorName;}}
这里,Ball这个结构中又包括了myColor这个结构,myColor结构包括Red、Green、Blue、ColorName这4个成员。40第40页,课件共72页,创作于2023年2月枚举(enum)类型是只能取值于所有列举出的有限个元素的一种数据类型。声明格式:
enum枚举类型名{元素1,元素2,……};
其中,枚举类型名是用户定义的枚举类型的类型标识符;大括号中的元素1、元素2,……是枚举类型所包含的所有元素列表。枚举类型41第41页,课件共72页,创作于2023年2月比如,我们声明一个代表星期的枚举类型:
enumWeekDay{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}
WeekDayday;
赋值方式如下:day=Tuesday;42第42页,课件共72页,创作于2023年2月
引用类型与C++中的引用类似,因为你可以将它们视作类型安全的指针。引用(在不是Null时)总是确保指向一个对象,这个对象具有指定的类型而且已经分配了地址。另外,引用可以是Null,这表示它当前不引用或不指向任何对象。C#中的引用类型有4种:类数组代表接口
2.4.2引用类型43第43页,课件共72页,创作于2023年2月在面向对象的概念中,类是封装数据的基本单位。类是一组具有相同数据结构和相同操作的对象的集合。是对一系列具有相同性质的对象的抽象,是对对象共同特征的描述。比如每一辆汽车都是一个对象的话,所有的汽车可以作为一个模板,我们就定义汽车这个类。
传统的编程是面向过程的机制,而VisualC#使用可视化的面向对象的程序设计方法。类44第44页,课件共72页,创作于2023年2月类的声明类的声明格式如下:class-modifersclassclassname{……}其中class-modifers为类的修饰符,常用的有public,protected,private,abstractclassname为类的类名。
45第45页,课件共72页,创作于2023年2月在一个类中,每个对象都是类的实例,C#中的new操作符可用于建立一个类的实例。可以通过调用对象的属性、方法和事件,来访问对象的功能。
对象创建的格式如下:
classNameObjectName=newclassName();其中,ObjectName为创建的对象名对象46第46页,课件共72页,创作于2023年2月47(1)对象的属性。对象的性质称为属性,不同的对象有不同的属性。通过修改或设置这些属性即可有效地控制对象的外观和操作。属性的设置或修改可以通过属性窗口进行,也可以通过编辑的方法在程序运行时来改变对象的相关属性。
在程序中设置属性一般格式是:对象名.属性名=属性值;
例如,设置窗体对象的标题为“欢迎来到编程世界”的代码命令是:
Form1.text=“欢迎来到编程世界”;47第47页,课件共72页,创作于2023年2月(2)对象的方法。方法(Method)是与对象相关联的过程与函数的统称,由系统内部定义,而不用编写代码。如窗口的关闭等。不同的对象具有不同的内部方法。(3)对象的事件。所谓事件(Event),是由VisualC#预先定义好的、能够被对象识别的动作,不同的对象能够识别的事件也有所不同。4848第48页,课件共72页,创作于2023年2月一个数组就是一组类型相同的变量的集合。这些变量叫做数组元素。可以用数组元素在数组中的位置(即下标)来引用它。
特点:所有的元素类型都相同。
数组数组必须先声明再引用。一个数组的声明包括数组名称、数组元素类型和数组维数。49第49页,课件共72页,创作于2023年2月创建数组时,应该先声明,然后分配内存。做法如下:
1、array_type[]array_name;
//声明类型为array_type的一维数组array_name2、array_name=newarray_type[element_numbers];
//为数组array_name分配内存例如:
string[]person_name;person_name=newstring[10];50第50页,课件共72页,创作于2023年2月例如:
string[]person_name;person_name=newstring[10];可以写成:
string[]person_name=newstring[10];上面说的两步也可以缩写成一步:array_type[]array_name=newarray_type[element_numbers];51第51页,课件共72页,创作于2023年2月上面只是创建了数组,数组在被访问之前必须初始化。可以在创建的时候就完成初始化,有以下三种方法:(1)int[]numbers=newint[]{1,2,3,4,5};
(2)int[]numbers={1,2,3,4,5};
(3)int[]numbers;
numbers=newint[]{1,2,3,4,5};
也可以在创建完之后再初始化,如:
int[]numbers=newint[5];numbers[0]=1;numbers[1]=2;numbers[2]=3;numbers[3]=4;numbers[4]=5;52第52页,课件共72页,创作于2023年2月在数组操作中经常使用的一个重要属性是数组的长度。要确定一维数组的长度,可以使用Length属性,例如:intArrayLength=ArrayName.Length;如果是多维数组,则可以使用GetLength方法确定其某一特定维的长度,例如:intArrayLength=ArrayName.GetLength(0);//获取ArrayName数组第一维的长度C#语言中还提供了Sort和Reverse这样的静态方法,可以将数组按照升序或降序排列。53第53页,课件共72页,创作于2023年2月[例]使用Sort和Reverse方法对数组排序。usingSystem;namespaceArrayExample1{classProgram{staticvoidMain(){string[]Artists={"Leonardo","Monet","VanGogh","Klee"};
//将数组Artists做升序排列,并输出其结果;
Array.Sort(Artists);for(inti=0;i<Artists.Length;i++){Console.WriteLine(Artists[i]);}
//将数组Artists做降序排列,并输出其结果;
Array.Reverse(Artists);
for(inti=0;i<Artists.Length;i++){Console.WriteLine(Artists[i]);}Console.ReadLine();}}}输出结果:KleeLeonardoMonetVanGoghVanGoghMonetLeonardoKlee54第54页,课件共72页,创作于2023年2月2.5字符串
C#内置支持功能完全的string类型。更重要的是,C#把字符串也当成对象,封装了所有字符串所拥有的操作、排序和搜索方法。55第55页,课件共72页,创作于2023年2月2.5.1字符串的声明和初始化定义字符串最基本的方式是把一个双引号括起来的字符串赋给一个string类型的变量:
strings="abcdef";
双引号括起来的字符串可以包含转义字符,如“\n”或“\t”,都以反斜线开始,用来表示换行或制表。由于反斜线本身在一些命令行语法(如URL或者目录路径)中会用到,引号括起的字符串中,反斜线必须在其自身前面再加一个反斜线。如下面代码所示:
stringdirectory="C:\\text";56第56页,课件共72页,创作于2023年2月字符串也可以用原样的字符串创建,可以以“@”符号开头,这样string构造方法就知道字符串应照原样使用,即使它要跨行或者含有转义字符。因此,下面的程序代码
stringdirectory=“C:\\text\\2\\3";
也可以改写成如下的代码:
stringdirectory=@"C:\text\2\3";57第57页,课件共72页,创作于2023年2月
string类型变量可以看作是char变量的只读数组。这样,就可以使用下面的语法访问每个字符:
stringmyString="abcdef";charmyChar=myString[1];
同时,我们还可以使用ToCharArray()函数,把string类型的变量转存到字符数组里面了。58第58页,课件共72页,创作于2023年2月一个string转化为字符数组的例子usingSystem;namespacestringExample{classProgram{staticvoidMain(string[]args){strings="abcdef";char[]myChar=s.ToCharArray();Console.WriteLine("字符数组myChar输出如下:");foreach(charcinmyChar){Console.WriteLine("{0}",c);}Console.ReadLine();}}}59第59页,课件共72页,创作于2023年2月程序运行结果60第60页,课件共72页,创作于2023年2月字符串的拼接字符串的串接(合并)是指使用“+”符号连接前后两个字符串:
stringcity="南京市";stringstreet="新街口";stringaddress=city+street;Console.WriteLine("地址是:"+address);
上述代码的输出结果为:"地址是:南京市新街口"
。
61第61页,课件共72页,创作于2023年2月
string类有很多方法和属性,常见的有:Length属性、ToUpper/ToLower方法、IndexOf方法、Substring方法等。string类的方法和属性1、Length属性
Length属性是描述字符串长度的属性。
stringstr2=“youarewelcome!”;
intn=str2.Length;
那么n就得到str2字符串的长度为16。62第62页,课件共72页,创作于2023年2月2、ToUpper/ToLower方法介绍
ToUpper()方法是把字符串中所有的字母都变成大写。
ToLower()方法是把字符串中所有的字母都变成小写。3、IndexOf方法介绍
IndexOf()方法是从str1字符串找出第一次出现某子字符串的位置,下标从0开始。
stringstr1="youarewelcome";intn=str1.IndexOf("are"
);那么n的值为4;63第63页,课件共72页,创作于2023年2月4、Substring()方法
Substring()方法是从str1字符串的第n1个字符开始,取长度为n2的子串。
str1.Substring(n1,n2);
例:stringstr1="youarewelcome";Console.WriteLine(str1.Substring(4,3));//结果为are64第64页,课件共72页,创作于2023年2月5、在一个字符串的指定位置插入指定的字符串Insert(intstartIndex,stringstr)在startIndex处插入字符串str。例如:stringStr1=“thisisastring.”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 精神科病区管理规范
- 与公司共同签订合同样本
- 专项经理聘用合同样本
- 书店股权转让合同样本
- 代销协议违约合同标准文本
- 代理淘宝合同标准文本
- 乡下建筑劳务合同样本
- 传媒公司演出合同标准文本
- 乡村道路借用合同样本
- 二手空调买卖合同样本
- 教育心理学-形考作业2(第四至六章)-国开-参考资料
- 煤矿井下随钻测量定向钻进技术
- 2024水电站股权转让协议
- 孝感市云梦县楚云粮食储备有限公司招聘笔试题库2024
- 农业部2031号公告-1-2013 转基因植物及其产品环境安全检测 耐除草剂大豆 第1部分:除草剂耐受性
- DB15T+3517-2024长距离输水管线复合式空气阀应用技术规程
- 品质提升计划改善报告课件
- DL-T-5161.8-2018电气装置安装工程质量检验及评定规程盘、柜、及二次回路接线施工质量检验
- 桥梁设计手册箱梁
- 2024-2030年中国中低温耦合剂行业现状规模与发展趋势预测报告
- 三年级数学乘法除法竖式计算题100道
评论
0/150
提交评论