




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 成都工業(yè)學(xué)院《數(shù)字電視節(jié)目編導(dǎo)與制作》2023-2024學(xué)年第二學(xué)期期末試卷
- 西寧城市職業(yè)技術(shù)學(xué)院《城市傳播》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海交通大學(xué)《單片機(jī)原理及其應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 內(nèi)蒙古大學(xué)《材料化學(xué)與物理》2023-2024學(xué)年第二學(xué)期期末試卷
- 西安海棠職業(yè)學(xué)院《風(fēng)景園林制圖》2023-2024學(xué)年第二學(xué)期期末試卷
- 襄陽職業(yè)技術(shù)學(xué)院《設(shè)計基礎(chǔ)(1)》2023-2024學(xué)年第二學(xué)期期末試卷
- 河南藝術(shù)職業(yè)學(xué)院《形體基訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 隴南師范高等??茖W(xué)?!渡锇踩c實(shí)驗(yàn)室安全》2023-2024學(xué)年第二學(xué)期期末試卷
- 新鄉(xiāng)職業(yè)技術(shù)學(xué)院《醫(yī)用生物材料A》2023-2024學(xué)年第二學(xué)期期末試卷
- 2021電力工程樓梯及欄桿施工作業(yè)指導(dǎo)書
- QSB快速反應(yīng)看板
- 初中信息技術(shù)備課組工作計劃8篇
- 售后維修服務(wù)單模板
- (中職)電子技術(shù)基礎(chǔ)與技能(電子信息類)教案
- 汪小蘭有機(jī)化學(xué)課件(第四版)3
- 減少電力監(jiān)控系統(tǒng)告警信息上傳方法的研究(QC成果)
- 交易商協(xié)會非金融企業(yè)債務(wù)融資工具發(fā)行注冊工作介紹
- 《人與環(huán)境》課程教學(xué)大綱
- 班組長管理能力提升培訓(xùn)(PPT96張)課件
- 深圳市城市用地分類表
- 內(nèi)蒙古自治區(qū)小額貸款公司試點(diǎn)管理實(shí)施細(xì)則
評論
0/150
提交評論