C#程序设计 第2章C#语言基础
C# 程序设计 第2章 C#语言基础
本章目标 了解什么是表达式 ■了解什么是算术运算符 ■了解什么是赋值运算符 ■掌握如何使用关系运算符 ■掌握逻辑运算符的使用方法 ■掌握如何对变量进行移位操作 ■了解算术运算符的优先级顺序 熟练掌握流程控制语句
2 本章目标 ▪ 了解什么是表达式 ▪ 了解什么是算术运算符 ▪ 了解什么是赋值运算符 ▪ 掌握如何使用关系运算符 ▪ 掌握逻辑运算符的使用方法 ▪ 掌握如何对变量进行移位操作 ▪ 了解算术运算符的优先级顺序 ▪ 熟练掌握流程控制语句
C#基础 ★ 运算符和表达式 顺序结构 选择结构 循环结构 跳转语句 3
3 C#基础 ★ 运算符和表达式 顺序结构 选择结构 循环结构 跳转语句
语句 语句(statement)以分号终止 ■ 由花括号{和括起来的一系列语句构成代码块(bock) ■声明语句(declaration statement) 表达式语句(expression statement.) ■选择语句(selection statement):if switch 循环语句(iteration statement):while、do、for和foreach语句 跳转语句(jump statement):break、continue、.goto、return、throw 语句等 try.catch语句 checked语句和unchecked语句 ■Iock语句 using语句 例:3-1 Statements
4 语句 ▪ 语句(statement)以分号终止 ▪ 由花括号{ 和 }括起来的一系列语句构成代码块(block) ◼ 声明语句(declaration statement) ◼ 表达式语句(expression statement) ◼ 选择语句(selection statement):if switch ◼ 循环语句(iteration statement): while、do、for 和 foreach 语句 ◼ 跳转语句(jump statement): break、continue、goto、return、throw 语句等 ◼ try.catch 语句 ◼ checked 语句和 unchecked 语句 ◼ lock 语句 ◼ using 语句 例:3-1 Statements
运算符 ■ C#运算符(operator)用于在表达式中对一个或 多个称为操作数的进行计算并返回结果值 ■算术运算符 ■关系和类型测试运算符 ·逻辑运算符 ■赋值运算符 ·字符串运算符 ■1 位运算符 ■条件运算符 ■其他运算符 5
5 运算符 ▪ C#运算符(operator)用于在表达式中对一个或 多个称为操作数的进行计算并返回结果值 ◼ 算术运算符 ◼ 关系和类型测试运算符 ◼ 逻辑运算符 ◼ 赋值运算符 ◼ 字符串运算符 ◼ 位运算符 ◼ 条件运算符 ◼ 其他运算符
算术运算符 运算符 含义 说明 优先级 实例 结果 ++ 增量 操作数加1 ++num,num十+ 减量 操作粘上 mumm,num- 一示 ©操作数都是整数:取整 8 一元 ©操作数至少有一个是浮点数:浮点除法 乘法 num*num*2 128 除法 第二个操作数除第一个操作数 10 num 1 10.0/m 1.25 模数 第二个操作数除第一个操作数后的余数 10 num 2 8%2.2 1.4 加法 两个操作数之和 4 10 num 18 减法 从第一个操作数中城去第二个操作数 10 -num 注意: ()算术运算符两边的操作应是数值型。若是字符型,则自动转换 成字符所对应的Jnicode码值后再进行运算 ■(2)增量运算符(+、-)可以出现在操作数之前(+variable、- -variable)或之后(variable++、variable-) 6
6 算术运算符 ▪ 注意: ◼ (1)算术运算符两边的操作应是数值型。若是字符型,则自动转换 成字符所对应的Unicode码值后再进行运算 ◼ (2)增量运算符(++、-)可以出现在操作数之前(++variable、 - -variable )或之后(variable++、 variable - - ) ☺操作数都是整数:取整 ☺操作数至少有一个是浮点数:浮点除法
赋值运算符 运算符 说明 表达式 结果 给变量赋值 int a,b; 运算后,b的值为1 ©赋值运算符的优先级最低 操作数1与 十= 给操作数1 运算后,b的值为5 b+=a; 操作数1与操作数2相减后赋值 int a,b; 给操作数1 a=2;b=3; 运算后,b的值为1 b-=a; 操作数1与操作数2相乘后赋值 int a,b; 给操作数1 a=2;b=3; 运算后,b的值为6 b*=a; int a,b; = 操作数1与操作数2相除后赋值 给操作数1 a=2;b=6; 运算后,b的值为3 b/=a; %= 操作数1与操作数2相除取余赋 int a,b; 值给操作数1 a=2;b=7; 运算后,b的值为1 b%=a;
7 赋值运算符 运算符 说明 表达式 结果 = 给变量赋值 int a, b; a = 1; b = a; 运算后,b的值为1 += 操作数1与操作数2相加后赋值 给操作数1 int a, b; a = 2; b = 3; b += a; 运算后,b的值为5 -= 操作数1与操作数2相减后赋值 给操作数1 int a, b; a = 2; b = 3; b -= a; 运算后,b的值为1 *= 操作数1与操作数2相乘后赋值 给操作数1 int a, b; a = 2; b = 3; b *= a; 运算后,b的值为6 /= 操作数1与操作数2相除后赋值 给操作数1 int a, b; a = 2; b = 6; b /= a; 运算后,b的值为3 %= 操作数1与操作数2相除取余赋 值给操作数1 int a, b; a = 2; b = 7; b %= a; 运算后,b的值为1 ☺赋值运算符的优先级最低
关系和类型测试运算符 假设intn myArray=new int1.2: 运算符」 含义 实例 结果 相等 ”ABCDEF”="ABCD False 不等 "ABCD”I="abcd” True 大于 ’a’>’s’ False 大于等于 123>=23 False 小于 a<’s True 小于等于 ae’s True xisT数据x是否属于类型T myArray is int False myArray is int [ True myArray as int[] System.Int320 返回转换为类型T的x, x as T 如果x不是T则返回 null myArray as object System.Int32 优先级比算术运算符低,比赋值运算符高。 ■各个关系运算符的优先级相同。 ■数值类型,关系运算符按照操作数的数值大小进行比较。 ■对于char类型,关系运算符比较字符的Unicode编码值 除了“==和“I=”外,其他关系运算符不能比较String对 象 8
8 关系和类型测试运算符 ▪ 假设int[] myArray = new int[]{1,2}; ▪ 优先级比算术运算符低,比赋值运算符高。 ▪ 各个关系运算符的优先级相同。 ▪ 数值类型,关系运算符按照操作数的数值大小进行比较。 ▪ 对于char类型,关系运算符比较字符的Unicode编码值 ▪ 除了“==”和“!=”外,其他关系运算符不能比较String对 象
引用类型的相等比较 ■ 比较运算符“==” ■大多数情况比较引用是否相等 ■System.String类重载了“==',比较字符串的内容 ■值类型:操作比较的是两个变量的值是否相同 。对于引用型变量表示的是两个变量在堆中存储的地址是 否相同,即栈中的内容是否相同 TrimEnd(params char[]) TrimStart(params char[]) operator !=(string,string) operator ==(string,string) Length 图 this[int] Empty 9
9 引用类型的相等比较 ▪ 比较运算符“==” ◼ 大多数情况比较引用是否相等 ◼ System.String类重载了“==”,比较字符串的内容 ◼ 值类型: 操作比较的是两个变量的值是否相同 ◼ 对于引用型变量表示的是两个变量在堆中存储的地址是 否相同,即栈中的内容是否相同
is运算符 ■s可以检查对象是否与特定类型兼容,“兼容”表示对象 是该类型,或派生于该类型 ■ e isT e是表达式,T是数据类型 ■对象为null,结果为False lis和as运算的使用 int i=123; C:\Windows\s. object obj=456; 123 is int 456is int if(i is int) is A. 请按任意键继续。 Console.WriteLine("[O)is int",i); if(obj is int Console.WriteLine("(O}is int",obj); Aa=newA(0月 Bb=new B(); 其中:A是B的父类 if(a is B) Console.WriteLine("a is B."); if (b is A) Console.WriteLine“bisA.")月 10
10 is 运算符 ▪ is可以检查对象是否与特定类型兼容,“兼容”表示对象 是该类型,或派生于该类型 ▪ e is T ▪ 对象为null,结果为False ▪ is 运算符只考虑引用转换、装箱转换和拆箱转换 例: 关系运算符 e是表达式,T是数据类型 //is和as运算的使用 int i = 123; object obj = 456; if(i is int) Console.WriteLine("{0} is int",i); if(obj is int ) Console.WriteLine("{0}is int",obj); A a = new A(); B b = new B(); if(a is B) Console.WriteLine("a is B."); if (b is A) Console.WriteLine(“b is A."); 其中:A是B的父类