week2(数据类型)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第2章数据类型与流程控制2.1C#语言概述C#语言的设计目的是简化网络应用。使用C#语言能够迅速构建基于Windows操作系统和Internet的应用程序组件。设计者可以用C#语言编写多种类型的应用程序。第2章数据类型与流程控制2.1.1C#语言的特点(1)简洁的语法C#语言和Java语言一样,使用了统一的操作符,淘汰了C++语言中乱糟糟的表示符号和伪关键字,使用最简单、最常见的形式进行描述。(2)精心的面向对象设计C#语言是完全按照面向对象的思想来设计的,因此它具有面向对象所应有的一切特性:封装、继承与多态性。C#语言只允许单继承,即一个类不会有多个基类,从而避免了类型定义的混乱。在C#语言中,每种类型都是一个对象,因此不存在全局函数、全局变量和全局常数等概念,所有常量、变量、属性、方法、索引和事件都必须封装在类中,从而使代码具有更好的可读性,也减少了发生命名冲突的可能。第2章数据类型与流程控制2.1.1C#语言的特点(3)与Web的紧密结合在C#语言中,对于复杂的Web编程和其他网络编程更像是对本地对象进行操作,从而简化了大规模、深层次的分布式开发。用C#语言构建的组件能够方便地为Web服务并可以通过Internet被运行在任何操作系统上的任何格式所调用。(4)完全的安全性与错误处理语言的安全性与错误处理能力是衡量一种语言是否优秀的重要依据,C#语言可以消除许多软件开发中的常见错误,并提供了包括类型安全在内的完整安全性能。在默认情况下,从Internet和Intranet下载的代码都不允许访问任何本地文件和资源;C#语言不允许使用未初始化的变量,并提供了边界检查与溢出检查等功能。内存管理中的垃圾回收机制也大大减轻了开发人员对内存管理的负担。第2章数据类型与流程控制2.1.2C#语言与其他语言的比较1、C#语言与C++语言的比较•编译目标:C++代码直接编译为本地执行的代码,而C#语言默认编译为中间语言(IL)代码,执行时再通过Just-In-Time将需要的模块临时编译成本地代码。•内存管理:C++语言需要程序员显示地删除动态分配给堆的内存,而C#语言不需要这么做,C#语言采用垃圾回收机制自动在合适的时机回收不再使用的内存。•指针:C++语言中大量地使用指针,而C#语言使用对类实例的引用,如果确实想在C#语言中使用指针,必须声明是非安全的,不过,一般情况下在C#语言中没有必要使用指针。•字符串处理:在C#语言中,字符串是作为一种基本数据类型来对待的,因此比C++语言中对字符串的处理要简单得多。•C++语言允许类的多继承,而C#语言只允许类的单继承,但可以通过接口实现多继承。第2章数据类型与流程控制2.1.2C#语言与其他语言的比较2、C#语言与Java语言的比较从语法上讲,C#语言和Java语言非常相似,只是在细节上有一些差别。实际上,C#语言和Java语言的主要差别不是在语言本身,而是在它们所执行的平台上。Java程序需要一个运行环境JRE(JavaRuntimeEnvironment)来执行代码,但JRE只限于在Java这一门语言中使用。C#语言也需要一个运行环境CLR(CommonLanguageRuntime),但是CLR提供了对多种语言的支持。Java源代码可以被编译成字节代码的一种中间状态,然后由已提供的虚拟机来执行这些字节代码。C#代码也被编译成一种中间状态,称为中间语言(IL),但是IL代码则被传输到由CLR管理的执行进程上,然后通过CLR的JIT编译器编译成本地代码执行。C#语言与Java语言相比也有很多不同和改进之处。例如,C#语言的文件名不受文件中类名的限制,而在Java语言中则有此限制。另外,C#语言也提供了一些在Java语言中没有的功能,如运算符重载、封箱和装箱,以及方法隐藏等。第2章数据类型与流程控制2.1.2C#语言与其他语言的比较3、C#语言与VB.NET语言的比较和C#语言一样,VB.NET语言也是基于.NETframework和CLR的高级语言。但是C#语言有一些VB.NET语言所不具备的都有的特性,例如,C#语言可以使用非托管代码、移位操作符、内嵌的文档(XML)和运算符重载等。在发展前景上,由于C#语言一开始就是完全按照面向对象的思想来设计的,而且它使用的全部是.NET框架定义的语法格式,不存在考虑与.NET之前版本兼容的问题,因此给人的感觉是结构清晰,语法简洁、优雅。另外,C#语言作为一种高级语言标准,其基本的内部实现形式是公开的,因此更容易被多种平台接受和广泛地应用。当然,VB.NET语言也有其自身的优点,例如以前学习过VB的人既可以使用.NET之前的语法格式及函数,也可以使用.NET规定的语法格式和面向对象的设计思想。2.2C#数据类型C#数据类型可以分为两类:值类型和引用类型。值类型包括简单类型、枚举类型和结构类型;而引用类型包括类类型、接口类型、数组类型和委托类型。值类型和引用类型的区别在于,值类型的变量直接存放实际数据,而引用类型的变量存放的则是数据的地址,即对象的引用。值类型变量直接把变量的值保存在堆栈中,引用类型的变量把实际数据的地址保存在堆栈中,而实际数据则保存在堆中。注意:堆和堆栈是两个不同的概念,在内存中存储位置也不相同,堆一般用于存储可变长度的数据,如字符串类型;而堆栈则用于存储固定长度的数据,如整型类型的数据int(每个int变量占用4个字节)。由数据存储的位置可以得知,当把一个值变量赋给另一个值变量时,会在堆栈中保存两个完全相同的值;而把一个引用变量赋给另一个引用变量,则会在堆栈中保存对同一个堆位置的两个引用,即在堆栈中保存的两个数据是同一个堆的地址。在进行数据操作时,对于值类型,由于每个变量都有自己的值,因此对一个变量的操作不会影响到其它变量;对于引用类型的变量,对一个变量的数据进行操作就是对这个变量在堆中的数据进行操作,如果两个引用类型的变量引用同一个对象,实际含义就是它们在堆栈中保存的堆的地址相同,则对一个变量的操作就会影响到引用同一个对象的另一个变量。2.2C#数据类型表2-2列出了值类型和引用类型的具体区别。特性值类型引用类型变量中保存的内容实际数据指向实际数据的引用指针(地址)内存空间配置堆栈(Stack)受管制的堆(ManagedHeap)内存需求较少较多执行效率较快较慢内存释放时间点执行超过定义变量的作用域时由垃圾回收机制负责回收2.2C#数据类型除了这两种类型以外,在非安全代码中也可以使用指针类型。2.2C#数据类型2.2.1值类型值类型包括简单类型、枚举类型和结构类型。简单类型包括整数类型、浮点型、小数型、布尔型、字符型。声明值类型的语法形式为数据类型名变量名[=n];其中,数据类型名指当前所要定义的变量的类型;变量名指当前所要定义的变量的名称;[=n]是可选项,用于在定义变量的同时初始化该变量,即为变量赋初值;n为所要赋的初值。例如:inta=100;//声明一个整型变量a,并赋初值为100也可以采用先定义后赋值的方式,例如:inta;//声明一个整型变量aa=100;//为整型变量a赋值100注意:C#语言不允许使用未初始化的变量。如果在变量定义时未进行初始化,那么在使用该变量之前必须先赋值,否则会在编译时报错。另外,也可以把几个变量声明用一条语句完成,例如:inta=100,b,c=200,d;//声明整型变量a、b、c、d,并将a赋值100,c赋值2002.2C#数据类型2.2.1值类型1、整数类型由于计算机的机器字长限制,所以计算机内所有数据都是以一定位数的整数来表示的。根据变量在内存中所占的位数的不同,C#语言中提供了9种整数类型:短字节型(sbyte)、字节型(byte)、短整型(short)、无符号短整型(ushort)、整型(int)、无符号整型(uint)、长整型(long)、无符号长整型(ulong)和字符型(char)。这些整数类型的表示以及取值范围如表2-3所示。数据类型说明取值范围类型指定符sbyte1字节有符号整数-27~+(27-1)即-128~127byte1字节无符号整数0~(28-1)即0~255Ushort2字节有符号整数-215~+(215-1)即-32768~32767ushort2字节无符号整数0~(216-1)即0~65535Uint4字节有符号整数-231~+(231-1)即-2147483648~2147483647uint4字节无符号整数0~+(232-1)即0~4294967295Ulong8字节有符号整数-263~+(263-1)即-9223372036854775808~9223372036854775807Lulong8字节无符号整数0~+(264-1)即0~18446744073709551615U、L、UL2.2C#数据类型2.2.1值类型1、整数类型表2-3中数据类型的变量在赋值时,均可采用十进制或十六进制的数值,但如果是十六进制数值,在书写时要加前缀“0x”(这里“0”是阿拉伯数字“零”,不是字母“o”)。例如:longx=0x12ab;//声明一个整型变量x,并为其赋值为十六进制的数据12AB在表2-3中,类型指定符用于赋值为常数的情况,指定符放在常数的后面,大小写均可。对使用类型指定符的数据类型,如果在给变量赋常数值时没有使用类型指定符,则默认将int类型数值隐式地转换为该类型进行赋值。例如:longy=1234;//int型的数值1234隐式地转为long类型。注意:由于小写的“l”字符容易和数字“1”混淆,所以“L”类型指定符最好用大写。例如:longx=1234L;2.2C#数据类型2.2.1值类型2、浮点型C#语言中有float和double两种浮点类型,具体规定如表2-4所示。数据类型说明精度范围类型指定符float4字节单精度浮点数71.5×10-45~3.4×1038Fdouble8字节双精度浮点数15~165.0×10-324~1.7×10308E例如:floatx=2.3F;//x=2.3doubley=2.7E+23;//y=2.7×10232.2C#数据类型2.2.1值类型3、小数型小数型即decimal类型,共占16字节,它所表示的范围大约为1.0×10-28~7.9×1028,具有28至29位十进制有效数字,特别适用于金融、货币等需要高精度数值的领域。其类型指定符为M(或m)。例如:decimailmyMoney=300.5m;decimaly=99999999999999999m;decimalx=123.123456789m;2.2C#数据类型2.2.1值类型4、布尔型布尔型用bool表示,bool类型只有两个值:true和false。例如:boolmyBool=false;boolb=(i0&&i10);注意:C#条件表达式的运算结果必须是bool型。2.2C#数据类型2.2.1值类型5、字符型字符型即char型,为单个Unicode字符,一个Unicode字符的标准长度为两字节。字符型变量可以用单引号引起来的字符直接赋值,例如:charmychar1=’A’;C#语言中还预定义有一个应用类型的String类,并定义了对应的基本类型string(注意第一个字母是小写)。String类型可以方便地实现字符串的复制、连接等各种操作。注意:string类型的常量用双引号将字符串引起来。例如:stringmystr1=”ABCD”;stringmystr2=mystr1;注意:字符类型与字符串类型是两种不同的类型,一定要区分开。2.2C#数据类型2.2.1值类型5、字符型C#语言中还可以使用十六进制的转义符前缀(“\x”)或Unicode表示法前缀(“\u”)对字符型变量和string类型的变量进行赋值,例如:charmychar2=’\x0041’;//字母“A”的十六进制表示charmystr3=’\u0041’;//字母“A”的Unicode表示C#语言中也可以采用转义符来表示一些特殊的字符,包括

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功