C#程序設(shè)計課件第4章 數(shù)組與字符串_第1頁
C#程序設(shè)計課件第4章 數(shù)組與字符串_第2頁
C#程序設(shè)計課件第4章 數(shù)組與字符串_第3頁
C#程序設(shè)計課件第4章 數(shù)組與字符串_第4頁
C#程序設(shè)計課件第4章 數(shù)組與字符串_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第4章

數(shù)組與字符串簡介如果需要使用同一類型的多個對象,就可以使用數(shù)組。4.1數(shù)組數(shù)組是一種由若干個變量組成的集合,數(shù)組中包含的變量稱為數(shù)組的元素,它們具有相同的數(shù)據(jù)類型。數(shù)組元素可以是任何類型,包括數(shù)組類型。數(shù)組元素的個數(shù)稱為數(shù)組的長度,數(shù)組元素沒有名稱,只能通過索引(又稱下標(biāo))來訪問。4.1.1一維數(shù)組的聲明

在C#語言中,數(shù)組是被當(dāng)作對象來實(shí)現(xiàn)的。在聲明數(shù)組時,應(yīng)先定義數(shù)組中元素的類型,其后是一個空方括號和一個變量名。C#中聲明一維數(shù)組語法格式如下:

數(shù)組類型[]數(shù)組名;例如,下面聲明了一個包含整型元素的數(shù)組:int[]numbers;//聲明了名為numbers的數(shù)組,元素類型為intstring[]myArray;//聲明了名為myArray的數(shù)組,元素類型為str4.1.2一維數(shù)組的初始化

C#初始化數(shù)組的方法有兩種:靜態(tài)初始化和動態(tài)初始化。1.靜態(tài)初始化如果一個數(shù)組中包含的元素不多,而且在程序設(shè)計時就已經(jīng)知道這些元素的初始值,則可用靜態(tài)始初化,也就是在定義數(shù)組的同時為其初始化。格式如下:

數(shù)據(jù)類型[]數(shù)組名={元素值1,元素值2,??,元素值n};

4.1.2一維數(shù)組的初始化

2.動態(tài)初始化

數(shù)組動態(tài)初始化的格式如下:

(1)用兩個語句行實(shí)現(xiàn)動態(tài)初始化

數(shù)據(jù)類型[]數(shù)組名;數(shù)組名=new數(shù)據(jù)類型[表達(dá)式];(2)把定義數(shù)組變量和實(shí)例化兩個步驟合在一起,用一個語句行實(shí)現(xiàn)動態(tài)初始化

數(shù)據(jù)類型[]數(shù)組名=new數(shù)據(jù)類型[表達(dá)式];其中表達(dá)式是指定數(shù)組長度的正整數(shù),可以是表達(dá)式,也可以是常量。4.1.3一維數(shù)組元素的訪問

1.?dāng)?shù)組元素的引用數(shù)組在聲明和初始化后,就可以引用數(shù)組中的元素了。數(shù)組元素的引用是通過數(shù)組名和下標(biāo)來引用,引用數(shù)組元素的一般格式如下:數(shù)組名[索引]數(shù)組中的每個元素相當(dāng)于一個普通變量,可以為它們賦值,也可以引用其值。在C#中,數(shù)組元素的默認(rèn)下標(biāo)值是從0開始的。在一個擁有n個元素的數(shù)組中,首個元素的下標(biāo)值為0,其它元素的下標(biāo)值依次加1,最后一個元素的下標(biāo)值為n-1。4.1.3一維數(shù)組元素的訪問

2.?dāng)?shù)組元素的遍歷在C#中,為了方便遍歷集合中的每一個元素,提供了一種特殊的foreach語句用于構(gòu)成循環(huán)。數(shù)組屬于集合類型,所以也可以使用foreach語句來遍歷數(shù)組中的每一個元素。語法形式如下:

foreach(類型標(biāo)識符inarray)

其中,array是被遍歷的數(shù)組名,標(biāo)識符是一個用于控制foreach循環(huán)的只讀局部變量,僅在foreach語句中有效,它的類型應(yīng)與array的類型一致。4.2二維數(shù)組

定義并且初始化二維數(shù)組的語法形式為:

數(shù)據(jù)類型[,]數(shù)組名;

也就是說,只要在方括號內(nèi)加一個逗號,定義的就是二維數(shù)組。依此類推,在方括號內(nèi)加兩個逗號,定義的就是三維數(shù)組。

例如:int[,]a;//定義了二維整型數(shù)組astring[,,]b;//定義了三維字符串?dāng)?shù)組b4.2二維數(shù)組

跟一維數(shù)組一樣,在數(shù)組元素個數(shù)不多的情況下,也可以使用靜態(tài)初始化的辦法對二維數(shù)組進(jìn)行初始化,但數(shù)組定義和靜態(tài)初始化也必須在同一個語句內(nèi)完成。例如,以下定義了一個3行×3列的二維整型數(shù)組,并對其靜態(tài)初始化:

int[,]a={{4,5,7},{2,3,6},{9,8,1}};4.3Array類

在C#中,所有的數(shù)組都是從.NET類庫中的System.Array類派生而來的,用方括號聲明數(shù)組是C#中使用Array類的記號,因而可以直接使用這個類所定義的屬性和方法。4.3.1Array類屬性表

4-2Array類的常用屬性屬

性說

明LengthLength屬性返回數(shù)組中的元素個數(shù)。如果是一個多維數(shù)組,該屬性會返回所有階的元素個數(shù)。如果需要確定一維中的元素個數(shù),則可以使用GetLength()方法LongLengthLength屬性返回int值,而LongLength屬性返回long值。如果數(shù)組包含的元素個數(shù)超出了32位int值的取值范圍,就需要使用LongLength屬性,來獲得元素個數(shù)Rank使用Rank屬性可以獲得數(shù)組的維數(shù)4.3.2Array類方法

Array類還包含許多靜態(tài)方法,表4-3列出了常用的Array類靜態(tài)方法。充分利用這些方法,可以高效率地實(shí)現(xiàn)數(shù)組的復(fù)制、排序、查找等操作。

方法

說明

返回值類型

BinarySearch在一維已排序數(shù)組中搜索指定值

intClear清除數(shù)組中指定范圍的元素

voidCopy將源數(shù)組中指定范圍的元素復(fù)制到目標(biāo)數(shù)組的指定區(qū)域

voidCreateInstance創(chuàng)建數(shù)組

ArrayIndexOf一維數(shù)組內(nèi)首次出現(xiàn)

intLastIndexOf一維數(shù)組內(nèi)最后一次出現(xiàn)

longReverse將一維數(shù)組中的部分元素逆序排列

intSort將指定的一維數(shù)組排序

type4.3.3創(chuàng)建數(shù)組在本章的第一節(jié)中已經(jīng)介紹了利用[]聲明數(shù)組并對其初始化的方法,除此之外,還可以利用Array類提供的靜態(tài)方法CreateInstance()創(chuàng)建數(shù)組對象。

CreateInstance()有5種重載形式,可以創(chuàng)建多維數(shù)組和不基于0的數(shù)組,下面僅列出一種:

Arrayarr=Array.CreateInstance(Typetype,int[]length,int[]lowbound);其中:

(1)Typetype所創(chuàng)建數(shù)組的數(shù)據(jù)類型

(2)int[]length所創(chuàng)建數(shù)組的維數(shù)和各個維的長度

(3)int[]lowbound所創(chuàng)建數(shù)組每個維的下標(biāo)最小值

4.3.3創(chuàng)建數(shù)組例如:int[]size=newint[]{5,7};int[]start=newint[]{1,1};Arraymyarray=Array.CreateInstance(typeof(double),size,start);如果事先不知道元素的類型,就可以使用該靜態(tài)方法,因?yàn)轭愋涂梢宰鳛門ype對象傳送給CreateInstance()方法。還可以用SetValue()方法設(shè)置值,用GetValue()方法讀取值。4.3.4排序Array類提供了實(shí)現(xiàn)數(shù)組排序的靜態(tài)方法Sort(),以及使數(shù)組元素逆向排列的靜態(tài)方法Reverse()。排序方法的語法格式如下:

Array.Sort(arrayname);Array.Reverse(arrayname);Sort()方法只能使一維數(shù)組按從小到大的方式排序,若希望實(shí)現(xiàn)從大到小的排序,可以在使用Sort()方法完成排序之后,再使用Reverse()方法逆向排序。

Reverse()方法的作用是使數(shù)組中指定的部分元素按原有順序逆向排列,而不是對它們進(jìn)行從小到大或從大到小的排序。4.3.5數(shù)組復(fù)制Array.Copy()方法的功能是將源數(shù)組中指定范圍的元素復(fù)制到目標(biāo)數(shù)組的指定區(qū)域,它有4種重載形式,舉例說明格式如下:Array.Copy(source,sourceIndex,distination,distinationIndex,length);其中:(1)source源數(shù)組

(2)sourceIndex源數(shù)組中指定的起始下標(biāo)

(3)distination目標(biāo)數(shù)組

(4)distinationIndex目標(biāo)數(shù)組中指定的起始下標(biāo)

(5)length復(fù)制元素的個數(shù)

這個語句的作用是:在源數(shù)組中,從指定的下標(biāo)開始,把length個元素復(fù)制到目標(biāo)數(shù)組中指定下標(biāo)開始的區(qū)域內(nèi)。

4.4字符串C#的字符串是一個由若干個Unicode字符組成的字符數(shù)組,字符串常量使用雙引號來標(biāo)記,例如:"中國夢"就是一個字符串常量。字符串變量使用string關(guān)鍵字來聲明,例如:stringname="習(xí)近平",表示聲明了一個字符串變量name。兩個字符串可以通過“+”運(yùn)算符來連接,例如:"武漢,"+"每天不一樣!",表示連接兩個字符串,連接結(jié)果為"武漢,每天不一樣!"。4.4字符串盡管字符串是引用類型,但仍然可以使用關(guān)系運(yùn)算符“==”和“!=”來比較兩個字符串,其實(shí)質(zhì)是比較兩個字符串各對應(yīng)的字符是否相同。例如:設(shè)strings1="abc",s2="shz",則s1!=s2的運(yùn)算結(jié)果為true。由于C#的字符串可以看成一個字符數(shù)組,因此,C#允許通過索引來提取字符串中的字符。例如,strings="敢為人先,追求卓越",則執(zhí)行charc=s[7];字符型變量c的值為"卓"。4.4.1字符串長度屬性

System.String類實(shí)例的唯一屬性是Length,語法格式如下:intx=str.Length;//str是字符串類型變量

C#中的字符串常量是建立在Unicode字符集基礎(chǔ)之上的,它所包含的任何單個字符都由2個字節(jié)來表示。計算字符串長度時,無論中文字符、英文大小寫字母、數(shù)字、標(biāo)點(diǎn)符號,還是其它特殊符號,都按一個字符計算。

4.4.2取子串從字符串str1中截取子串的SubString方法有如下兩種重載方式:

(1)str1.SubString(intstart,intlength)(2)str1.SubString(intstart)就是從字符串str1中start指定的位置開始,截取length參數(shù)規(guī)定的字符個數(shù),如果省略length參數(shù),則從start指定的位置開始,一直截取到結(jié)尾。注意start是從0開始起算的。

4.4.3字符串查找與定位判斷一個字符串是否由指定的子串開頭或結(jié)尾,查看一個字符串中是否包含另一個指定的子串,并且當(dāng)這個子串存在的情況下指出其位置,可以使用如下方法:boolb1=str1.StartsWith(substr);//判斷str1是否由substr子串開頭

boolb2=str2.EndsWith(substr);//判斷str2是否由substr子串結(jié)尾

4.4.3字符串查找與定位intpos1=str3.IndexOf(substr);//指出str3中第一次出現(xiàn)substr子串的位置

intpos2=str4.LastIndexOf(substr);//指出str4中最后一次出現(xiàn)substr子串的位置

如果字符串str3、str4中包含指定的子串,則IndexOf()和LastIndexOf()方法的返回值≥0;如果找不到則返回值為-1。4.4.4字符串比較比較兩個字符串是否相等,或者比較它們的大小,可以使用以下方法:str1.CompareTo(str2)//比較字符串str1和str2的大小

str1.Equals(str2)//判斷字符串str1和str2是否相等

其實(shí),字符串是沒有“大”、“小”之分的,這里所謂的“大”、“小”,指的是它們的Unicode編碼值的大小,也可以理解成排列順序的先后。排在前面的稱為“小”,排在后面的稱為“大”。

在這個意義上,字母“A”小于“B”,“n”大于“m”。

4.4.4字符串比較按照Unicode編

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論