第3章常用数据类型的用法.ppt

上传人:sccc 文档编号:5635641 上传时间:2023-08-04 格式:PPT 页数:55 大小:498.51KB
返回 下载 相关 举报
第3章常用数据类型的用法.ppt_第1页
第1页 / 共55页
第3章常用数据类型的用法.ppt_第2页
第2页 / 共55页
第3章常用数据类型的用法.ppt_第3页
第3页 / 共55页
第3章常用数据类型的用法.ppt_第4页
第4页 / 共55页
第3章常用数据类型的用法.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《第3章常用数据类型的用法.ppt》由会员分享,可在线阅读,更多相关《第3章常用数据类型的用法.ppt(55页珍藏版)》请在三一办公上搜索。

1、第3章 常用数据类型的用法,3.1 字符串3.2 数组3.3 枚举3.4 泛型3.5 泛型集合3.6 日期与时间处理3.7 数学运算3.8 随机数,3.1 字符串,字符串是由一个或多个Unicode字符构成的一组字符序列。1.字符串的创建与表示形式String类(string):string myString=some text;string s2=new string(a,2);/结果为aaString.Empty 表示空字符串String类的表示方法:string str=C:testfirst.cs string str=C:testfirst.cs 取字符串中的某个字符的方法:char

2、 chFirst=myString2;/结果为m,3.1 字符串,2.字符串比较字符串比较方法string.Compare(string s1,string s2)如果s1大于s2,结果为1;如果s1等于s2,结果为0;如果s1小于s2,结果为-1。string.Compare(string s1,string s2,bool ignoreCase)ignoreCase确定是否区分大小写比较两个字符串是否相等,使用:Equals方法=,3.1 字符串,3.字符串查找Contains方法:用于查找一个字符串中是否包含指定的子字符串。语法为:public bool Contains(string

3、value)例如:string str1=this is a string.;bool b=str1.Contains(is);IndexOf方法:求某个字符或者子串在字符串中出现的位置。两种最常用的重载形式:public int IndexOf(string s)public int IndexOf(string s,int startIndex)LastIndexOf方法:LastIndexOf方法的用法与IndexOf方法相同,查找最后一次出现的位置。,3.1 字符串,例如:Console.WriteLine(str1.IndexOf(is);/结果为2(注意序号从0开始)Console

4、.WriteLine(str1.LastIndexOf(is);/结果为5IndexOfAny方法:查找某个字符串中是否包含某些字符(多个不同的字符)。常用语法:public int IndexOfAny(char anyOf)例如:string s1=123abc123abc123;char c=a,b,5,8;int x=s1.IndexOfAny(c);/x结果为3,3.1 字符串,4.求子字符串Substring(int startIndex)截取从startIndex开始到字符串结尾的字符串。Substring(int startIndex,int count)截取字符串从start

5、Index位开始,截取长度为count的字符串。例如:string str=“abc123”;string s1=str.Substring(2);/s1:c123 string ss=str.Substring(1,4);Console.WriteLine(ss);/bc12,3.1 字符串,5.字符串的插入、删除和替换插入字符串 语法形式:public string Insert(int startIndex,string value)含义:从startIndex开始插入子字符串value 例如:string s1=abcdabcd;string s2=s1.Insert(2,12);/结

6、果为ab12cdabcd,3.1 字符串,删除字符串两种常用形式:1)Remove(int startIndex)删除从startIndex到字符串结尾的子字符串 2)Remove(int startIndex,int count)删除从startIndex开始的count个字 例如:string str1=“this is a string.”string s1=str1.Remove(2);/s1结果为th Console.WriteLine(str1.Remove(1,2);/结果为ts is a string,3.1 字符串,字符串替换 两种常用形式:1)Replace(string

7、oldStr,string newStr)2)Replace(char oldChar,char newChar)例如:string str1=this is a string.”string s1=str1.Replace(a,b);/结果为this is b string.Console.WriteLine(str1.Replace(is,xy);/结果为thxy xy a string,3.1 字符串,6.移除首尾指定的字符从字符串开头或结尾删除指定的字符:利用TrimStart删除字符串首部字符,利用TrimEnd删除字符串尾部字符,利用Trim删除字符串首部和尾部字符。默认移除空格。

8、例如:string s1=this is a book;string s2=that is a pen;string s3=is a pen;Console.WriteLine(s1.TrimStart();/删除首部空格Console.WriteLine(s2.TrimEnd();/删除尾部空格Console.WriteLine(s3.Trim();/删除首部和尾部空格,3.1 字符串,7.字符串的合并与拆分Join方法:在数组的每个元素之间串联指定的分隔符,从而产生单个串联的字符串。语法为:public static string Join(string separator,string

9、value)Split方法:将字符串按照指定的一个或多个字符进行分离,从而得到一个字符串数组。常用语法为:public string Split(params char separator),字符串的合并和拆分举例,例如:string sArray1=123,456,abc;string s1=string.Join(,sArray1);/结果为123,456,abcstring sArray2=s1.Split(,);/sArray2得到的结果与sArray1相同string s2=abc 12;34,56;string sArray3=s2.Split(,;,);/分隔符为逗号、分号、空格

10、Console.WriteLine(string.Join(Environment.NewLine,sArray3);输出结果:abc123456,3.1 字符串,8.字符串中字母的大小写转换ToUpper大写ToLower小写例如:string s1=This is a string;string s2=s1.ToUpper();/s2结果为THIS IS A STRINGstring s3=Console.ReadLine();if(s3.ToLower()=yes)Console.WriteLine(OK);,9.String和StringBuilder,String类实际上表示的是一系

11、列不可变的字符。说其实例是“不可变的”,是因为无法直接修改给该字符串分配的堆中的字符串。例如,在myString的后面接上另一个字符串:myString+=and a bit more;其实际操作并不是在原来myString所占内存空间的后面直接附加上第二个字符串,而是返回一个新String实例,即重新为新字符串分配内存空间。StringBuilder类位于System.Text名称空间下,使用StringBuilder类每次重新生成新字符串时不是再生成一个新实例,而是直接在原来字符串占用的内存空间上进行处理,而且它可以动态的分配占用的内存空间大小。,StringBuilder类用法举例,【例

12、3-1】StringBuilder类的基本用法。using System;using System.Text;namespace StringBuilderExample class Program public static void Main()StringBuilder sb=new StringBuilder();sb.Append(string1);sb.AppendLine(string2);sb.Append(string3);string s=sb.ToString();Console.WriteLine(s);Console.ReadLine();,StringBuilder

13、类用法总结,常用方法Append:追加字符串AppendFormat:追加格式化字符串Remove(int startIndex,int length):从StartIndex位置开始移除长度为length的字符串ToString()举例:StringBuilder builder=new StringBuilder();builder.Append(“abc123”);builder.AppendFormat(“0”,“456”);builder.Remove(1,2);builder.ToString();/a123456,StringBuilder适用场合,StringBuilder类适

14、用于字符串连接操作比较多的情况下,它可以大大提高系统的性能。性能测试对比:拼接从0开始的数字字符串,观察所用的时间,3.2 数组,数组用于存储同一种类型的数据。数组是一种引用类型,而不是值类型。数组是按照数组名、数据元素的类型和维数来描述的。C#中可以有一维数组、多维数组、交错数组。1.数组的声明与初始化 声明数组时,既可以一开始就指定数组元素的个数,也可以一开始不指定元素个数,而是在使用数组元素前动态地指定元素个数。例如:int a=new int30;string mystring=first,second,third;注意:不带new运算符的简化形式只能在声明语句中。,数组的声明语法举例

15、,数组的秩与数组长度,2.数组的秩与数组长度数组的秩(rank)是指数组的维数,例如一维数组秩为1,二维数组秩为2。数组长度是指数组中所有元素的个数。例如:int a=new int10;/数组长度为10int,b=new int3,5;/数组长度为3*5=15,其中第0维长度为3,第1维长度为5Array类提供访问秩和长度的属性和方法。(1)Rank属性(2)Length属性(3)GetLength(i)获取数组某一维的长度。,数组用法举例,【例3-2】编写一个控制台应用程序,定义一个二维数组,分别输出数组的秩、数组长度以及数组中的每个元素值。,数组,3.一维数组在C#中,数组的下标默认是从

16、0开始索引的。Length属性表示数组的长度。4.多维数组多维数组指维数大于1的数组,常用的是二维数组和三维数组。C#语言支持两种类型的二维数组,一种是二维矩形数组,另一种是二维交错数组。对于二维矩形数组,数组中的每一行都有相同的列数。例如:int,n2=new int,1,2,3,4,5,6;,数组,5.交错数组交错数组相当于一维数组的每一个元素又是一个数组,也可以把交错数组称为“数组的数组”。例如:int n1=new int2 new int 2,4,6,new int 1,3,5,7,9;交错数组的每一个元素既可以是一维数组,也可以是多维数组。,交错数组用法举例,【例3-3】交错数组的

17、用法。,数组,6.动态改变数组的大小Resize方法 public static void Resize(ref T array,int newSize)这是一种泛型表示形式。其中T表示数组类型,array为要调整大小的一维数组,该数组从零开始;如果为null则新建具有指定大小的数组。如果newSize大于旧数组的Length,则分配一个新数组,并将所有元素从旧数组复制到新数组。如果newSize小于旧数组的Length,则分配一个新数组,并将元素从旧数组复制到新数组直到新数组被填满为止;旧数组中的剩余元素将被忽略。如果 newSize与旧数组的 Length相等,则此方法不执行任何操作。,动

18、态改变数组的大小举例,【例3-4】演示如何动态改变一维数组的大小。,数组,7.数组元素的排序与查找C#语言中还提供了Sort和Reverse这样的静态方法,这些方法用快速排序算法将一维数组中的元素按照升序或降序排列。还可以方便地查找指定的元素。例如Contains方法和IndexOf方法等。,数组排序和查找举例,【例3-5】一维数组的排序和查找。,数组的统计以及数组和字符串间的转换,利用数组的Average方法、Sum方法、Max方法和Min方法可以求数组中所有元素的平均值、求所有元素的和、最大值和最小值。对于字符串数组,可以直接利用字符串的Join方法和Split方法实现字符串和字符串数组之

19、间的转换。,数组元素统计和字符串转换举例,【例3-6】演示如何统计数组中的元素以及如何实现数组和字符串之间的转换。,3.3 枚举,枚举(enum)是一组命名常量的集合,称为枚举成员列表。它可以为一组在逻辑上密不可分的整数值提供便于记忆的符号,从而使代码更清晰,也易于维护。声明enum类型变量的语法为:附加声明 访问修饰符 enum 名称:数据类型 枚举列表 例如:enum daysMon,Tue,Wed,Thu,Fri,Sat,Sun;注意:enum days:byteX1=255,X2;/错误枚举的使用 例如:days day=days.Sat;,枚举类型(续),Enum结构GetNames

20、 检索指定枚举中常数名称的数组 GetName 在指定枚举中检索具有指定值的常数的名称GetValues 检索指定枚举中常数值的数组。例子:enum Colors Red,Green,Blue,Yellow;foreach(string s in Enum.GetNames(typeof(Colors)Console.WriteLine(s);foreach(int i in Enum.GetValues(typeof(Colors)Console.WriteLine(i);Console.WriteLine(Enum.GetName(typeof(Colors),3);,3.4 泛型,泛型(

21、Generic)是具有占位符(类型参数)的类、结构、接口和方法,它与普通类的区别是泛型多了一个或多个表示类型的占位符,这些占位符用尖括号括起来。例如:public class MyClass public T MyProp get;set;/定义属性MyProp public void Print()Console.WriteLine(MyProp);,泛型,【例3-8】演示泛型的定义与用法。,可空泛型,可空类型是泛型结构Nullable的实例。例如,Nullable读作“可以为null的Int32”,可以将其赋值为任一个32位整数值,也可以将其赋值为null值。可空类型具有以下特性:(1)可

22、空类型表示可被赋值为null值的值类型变量。注意:不能写string?或Nullable(2)语法“T?”是泛型“Nullable”的简写,此处的T为值类型。这两种形式可以互换。如Nullable也可以写为int?。例如:int?number=0;Nullable number=0;二者是等价的。,可空泛型,(3)程序员可以使用泛型的HasValue和Value只读属性测试是否为空和检索值,如果此变量包含值,则HasValue属性返回True;如果此变量的值为空,则返回False。例如:int?number=5;if(number.HasValue)Console.WriteLine(numb

23、er.Value);可以利用可空类型变量提供的GetValueOrDefault方法,返回该类型的值或默认值。例如:int y=number.GetValueOrDefault();使用“?”运算符可以给可空类型分配默认值。例如:int y1=number?-1;,3.5 泛型集合,在System.Collections.Generic命名空间下,提供了常用的泛型集合类。,1.哈希集合,HashSet泛型类提供了高性能的数学集合运算,一个HashSet对象的容量是指该对象可以容纳的元素个数。常用方法:UnionWith方法:并集或Set加法IntersectWith方法:交叉ExceptWit

24、h方法:set减法SymmetricExceptWith方法:余集,HashSet举例,string arr1=a,b,c;HashSet h1=new HashSet(arr1);string arr2=c,d,e;HashSet h2=new HashSet(arr2);h1.UnionWith(h2);/并集Console.WriteLine(h1和h2执行完并集操作之后,h1集合元素为:);foreach(string x in h1)Console.WriteLine(x);,2.列表和排序列表,List泛型类表示可通过索引访问的强类型对象列表,该类提供了对列表进行搜索、排序和操作的

25、方法。常用方法如下:Add方法:将指定值的元素添加到列表中。Insert方法:在列表的中间插入一个新元素。Contains方法:测试该列表中是否存在某个元素。Remove方法:从列表中移除带有指定键的元素。Clear方法:移除列表中的所有元素。SortedList排序列表,用法与List类似。,列表和排序列表举例,【例3-9】演示泛型列表的定义与用法。,3.链表,LinkedList为双向链表。LinkedList对象中的每个节点都属于LinkedListNode类型。每个节点又指向其Next节点和Previous节点。LinkedList接受 null引用作为引用类型的有效Value属性,并

26、且允许重复值。如果LinkedList为空,则First和Last属性为null。例如:string words=a,b,c;LinkedList sentence=new LinkedList(words);sentence.AddFirst(dog);/结果为dog,a,b,c,,4.字典和排序字典,Dictionary泛型类提供了从一组键到一组值的映射。字典中的每个添加项都由一个值及其相关联的键组成,通过键来检索值。注意:一个字典中不能有重复的键。该泛型类提供的常用方法如下。Add方法:将带有指定键和值的元素添加到字典中。TryGetValue方法:获取与指定的键相关联的值。Contai

27、nsKey方法:确定字典中是否包含指定的键。Remove方法:从字典中移除带有指定键的元素。Sorted Dictionary泛型类用法与字典的用法相同,区别在于其保存按键进行升序排序后的结果。,5.队列,Queue泛型类表示对象的先进先出集合。队列在按接收顺序存储消息方面非常有用,存储在队列中的对象在一端插入,从另一端移除。队列可以保存null值并且允许有重复的元素。常用方法如下:Enqueue方法:将指定元素插入列尾。Dequeue方法:队列首元素出列。例如:Queue numbers=new Queue();numbers.Enqueue(one);numbers.Enqueue(two

28、);numbers.Dequeue();/移除第一个元素,6.堆栈,Stack泛型类表示同类型实例的大小可变的后进先出(LIFO)集合。堆栈可以保存null值并且允许有重复值。常用方法如下:Push方法:将指定元素插入栈顶。Pop方法:弹出栈顶元素。例如:Stack numbers=new Stack();numbers.Push(one);numbers.Push(two);String str=numbers.Pop();/str的值为“two”;,3.6日期与时间处理,对日期和时间处理的常用类是DateTime类和TimeSpan类。DateTime类表示范围在0001年1月1日午夜12

29、:00:00到9999年12月31日晚上11:59:59之间的日期和时间,最小时间单位等于100纳秒。TimeSpan类表示一个时间间隔。其范围在Int64.MinValue到Int64.MaxValue之间。例如:DateTime dt1=new DateTime(2009,10,1);DateTime dt2=new DateTime(2009,8,1);TimeSpan ts=dt1-dt2;Console.WriteLine(ts.Days);/61,DateTime类常用方法和属性,静态方法和属性DateTime.NowDateTime.TodayDateTime.Compare(D

30、ateTime dt1,DateTime dt2)DateTime.Parse(string str)实例方法和属性(假设dt为DateTime的一个实例)dt.Day,dt.Month,dt.Year,dt.Hourdt.ToLongDateString(),dt.ToShortDateString()dt.ToString(“yyyy-mm-dd”)/多种形式dt.CompareTo(DateTime dt1),3.6 日期与时间处理举例,【例3-10】DateTime类的用法举例。【例3-11】显示当前日期和时间。,3.7 数学运算,Math类位于System命名空间下,为三角函数、对数

31、函数和其他通用数学函数提供常数和静态方法。例如:int i=10,j=-5;double x=1.3,y=2.7;double a=2.0,b=5.0;Console.WriteLine(string.Format(-5的绝对值为0,Math.Abs(j);Console.WriteLine(string.Format(大于等于1.3的最小整数为0,Math.Ceiling(x);Console.WriteLine(string.Format(小于等于2.7的最大整数为0,Math.Floor(y);,Math类(续),Console.WriteLine(string.Format(10和-5

32、的较大者为0,Math.Max(i,j);Console.WriteLine(string.Format(1.3和2.7的较小者为0,Math.Min(x,y);Console.WriteLine(string.Format(2的5次方为0,Math.Pow(a,b);Console.WriteLine(string.Format(1.3的四舍五入值为0,Math.Round(x);Console.WriteLine(string.Format(5的平方根为0,Math.Sqrt(b);Console.ReadLine();,3.8 随机数,Random类用于生成随机数。默认情况下,Rando

33、m类的无参数构造函数使用系统时钟生成其种子值,而参数化构造函数可根据当前时间的刻度数采用Int32值。常用方法:Random r=new Random();int i=r.Next(10);double d=r.NextDouble();/返回0.01.0之间的随机数,3.8 随机数,【例3-13】Random类的基本用法。,本章涉及的面试题目,Question 33.(单选)(雅虎公司)int myArray3=new int3 new int35,6,2,new int56,9,7,8,3,new int23,2;myArray322的值是()。1.92.23.64.越界请详述在.NET中

34、类(class)与结构(struct)的异同(10分)(某IT公司),本章涉及的面试题目(续),以下枚举型的定义,其中错误的用法有()(某IT公司)a)public enum var1 Mike=100,Nike=102,Jike b)public enum var1:byte Mike=1000,Nike,Jike c)public enum var1 Mike=10,Nike,Jike d)public enum var1 Mike,Nike,Jike 判断下列说法是否正确(某IT公司)(1)在C#中,装箱操作是将值类型转化成Object类型。(2)在C#中,int是定义一个int型的二维数组。,本章作业及实验,P641、2、4实验三,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号