第4部分類(lèi)、常量與變量_第1頁(yè)
第4部分類(lèi)、常量與變量_第2頁(yè)
第4部分類(lèi)、常量與變量_第3頁(yè)
第4部分類(lèi)、常量與變量_第4頁(yè)
第4部分類(lèi)、常量與變量_第5頁(yè)
已閱讀5頁(yè),還剩89頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、sophie內(nèi)容(內(nèi)容(contents)數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型詞法結(jié)構(gòu)詞法結(jié)構(gòu) 常量和變量常量和變量 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式練習(xí)練習(xí)c#語(yǔ)言編程基礎(chǔ)語(yǔ)言編程基礎(chǔ) sophiev數(shù)據(jù)類(lèi)型、運(yùn)算符和表達(dá)式是編程的數(shù)據(jù)類(lèi)型、運(yùn)算符和表達(dá)式是編程的基礎(chǔ)基礎(chǔ)。vc#支持種類(lèi)豐富的數(shù)據(jù)類(lèi)型和運(yùn)算符,這支持種類(lèi)豐富的數(shù)據(jù)類(lèi)型和運(yùn)算符,這種特性使種特性使c#適用于廣泛的編程范圍。適用于廣泛的編程范圍。v本章將介紹本章將介紹c#的的基本語(yǔ)法基本語(yǔ)法,包括,包括詞法結(jié)詞法結(jié)構(gòu)構(gòu)、數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型、變量與常量變量與常量、運(yùn)算符運(yùn)算符和和表達(dá)式表達(dá)式等編程的基礎(chǔ)知識(shí)。等編程的基礎(chǔ)知識(shí)。2sophie1 詞法結(jié)構(gòu)詞法

2、結(jié)構(gòu)v詞法是構(gòu)成程序設(shè)計(jì)語(yǔ)言的最基本單詞法是構(gòu)成程序設(shè)計(jì)語(yǔ)言的最基本單位。位。v程序是由若干個(gè)語(yǔ)句構(gòu)成,而語(yǔ)句是由若程序是由若干個(gè)語(yǔ)句構(gòu)成,而語(yǔ)句是由若干個(gè)具有特殊含義的單詞和運(yùn)算符構(gòu)成的。干個(gè)具有特殊含義的單詞和運(yùn)算符構(gòu)成的。v所以學(xué)習(xí)一門(mén)編程語(yǔ)言,首先應(yīng)該從所以學(xué)習(xí)一門(mén)編程語(yǔ)言,首先應(yīng)該從詞法詞法入手。入手。3sophie1.1 標(biāo)識(shí)符標(biāo)識(shí)符(標(biāo)識(shí)符(identifier)是由程序開(kāi)發(fā)人員為類(lèi)型、方是由程序開(kāi)發(fā)人員為類(lèi)型、方法、變量等所選擇的名字。法、變量等所選擇的名字。 c#的標(biāo)識(shí)符應(yīng)當(dāng)使用字母或下劃線(xiàn)作為開(kāi)頭,由字的標(biāo)識(shí)符應(yīng)當(dāng)使用字母或下劃線(xiàn)作為開(kāi)頭,由字母、數(shù)字、下劃線(xiàn)(母、數(shù)字、下

3、劃線(xiàn)(“_”)和美元符號(hào)()和美元符號(hào)(“$”)組成,不能包括空格、標(biāo)點(diǎn)符號(hào)和運(yùn)算符組成,不能包括空格、標(biāo)點(diǎn)符號(hào)和運(yùn)算符,而且標(biāo),而且標(biāo)識(shí)符的名稱(chēng)最好和實(shí)際的應(yīng)用聯(lián)系起來(lái),這樣可以識(shí)符的名稱(chēng)最好和實(shí)際的應(yīng)用聯(lián)系起來(lái),這樣可以使程序更容易理解,做到使程序更容易理解,做到“見(jiàn)名知意見(jiàn)名知意”。 比如,用來(lái)表示售貨員的標(biāo)識(shí)符使用比如,用來(lái)表示售貨員的標(biāo)識(shí)符使用salesman比比用用people更容易理解。更容易理解。4sophie 下面是下面是合法合法的標(biāo)識(shí)符:的標(biāo)識(shí)符:sum,average,_total,student_name,lotus_1_2_3 下面是下面是不合法不合法的標(biāo)識(shí)符:的標(biāo)識(shí)

4、符:abc-abc/中間使用了減號(hào)而非下劃線(xiàn)中間使用了減號(hào)而非下劃線(xiàn)3abc /以數(shù)字開(kāi)頭以數(shù)字開(kāi)頭abc abc /中間有空格中間有空格class /使用關(guān)鍵字作為標(biāo)識(shí)符使用關(guān)鍵字作為標(biāo)識(shí)符5sophievc#的標(biāo)識(shí)符不能與的標(biāo)識(shí)符不能與關(guān)鍵字關(guān)鍵字相同,但是相同,但是可以使用可以使用“”前綴來(lái)避免這種沖突。前綴來(lái)避免這種沖突。例如:例如:whilewhilev上面兩個(gè)標(biāo)識(shí)符中,第一個(gè)標(biāo)識(shí)符是上面兩個(gè)標(biāo)識(shí)符中,第一個(gè)標(biāo)識(shí)符是合法的,而第二個(gè)標(biāo)識(shí)符不是合法的,合法的,而第二個(gè)標(biāo)識(shí)符不是合法的,因?yàn)橐驗(yàn)閣hile是關(guān)鍵詞。是關(guān)鍵詞。6sophievc#的標(biāo)識(shí)符的標(biāo)識(shí)符區(qū)別大小寫(xiě)區(qū)別大小寫(xiě),例如下

5、面的,例如下面的4個(gè)標(biāo)識(shí)符是不同的:個(gè)標(biāo)識(shí)符是不同的:membermembermembermember7sophie1.2 關(guān)鍵字v同同c和和c+語(yǔ)言一樣,語(yǔ)言一樣,c#也規(guī)定了很多關(guān)也規(guī)定了很多關(guān)鍵字用于程序控制、數(shù)據(jù)說(shuō)明或者其他功鍵字用于程序控制、數(shù)據(jù)說(shuō)明或者其他功能,由于它們的能,由于它們的特殊意義特殊意義,所以這些關(guān)鍵,所以這些關(guān)鍵字不能作為標(biāo)識(shí)符使用。字不能作為標(biāo)識(shí)符使用。8sophie2 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型v數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型是用來(lái)定義現(xiàn)實(shí)生活中各種數(shù)是用來(lái)定義現(xiàn)實(shí)生活中各種數(shù)據(jù)形式的標(biāo)識(shí)符及其存儲(chǔ)形式。據(jù)形式的標(biāo)識(shí)符及其存儲(chǔ)形式。vc#中數(shù)據(jù)類(lèi)型主要分為兩大類(lèi):中數(shù)據(jù)類(lèi)型主要分為兩大

6、類(lèi):值類(lèi)型值類(lèi)型和和引用類(lèi)型引用類(lèi)型。v在此,先講解這兩種類(lèi)型,然后再討論在此,先講解這兩種類(lèi)型,然后再討論數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換。數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換。9sophie2.1 值類(lèi)型值類(lèi)型值類(lèi)型通常用來(lái)表示通常用來(lái)表示基本類(lèi)型基本類(lèi)型、簡(jiǎn)單類(lèi)簡(jiǎn)單類(lèi)型型。 c#的值類(lèi)型包括的值類(lèi)型包括3種:種:簡(jiǎn)單類(lèi)型簡(jiǎn)單類(lèi)型、結(jié)構(gòu)結(jié)構(gòu)類(lèi)型類(lèi)型和和枚舉類(lèi)型枚舉類(lèi)型。 簡(jiǎn)單類(lèi)型包括整數(shù)類(lèi)型、浮點(diǎn)類(lèi)型、小簡(jiǎn)單類(lèi)型包括整數(shù)類(lèi)型、浮點(diǎn)類(lèi)型、小數(shù)類(lèi)型、字符類(lèi)型和布爾類(lèi)型等。數(shù)類(lèi)型、字符類(lèi)型和布爾類(lèi)型等。10sophie 1. 整數(shù)類(lèi)型 整數(shù)類(lèi)型的數(shù)據(jù)值只能是整數(shù)。數(shù)學(xué)上的整整數(shù)類(lèi)型的數(shù)據(jù)值只能是整數(shù)。數(shù)學(xué)上的整數(shù)可以從負(fù)無(wú)窮大

7、到正無(wú)窮大,由于計(jì)算機(jī)數(shù)可以從負(fù)無(wú)窮大到正無(wú)窮大,由于計(jì)算機(jī)存儲(chǔ)單元的限制,程序語(yǔ)言提供的整數(shù)類(lèi)型存儲(chǔ)單元的限制,程序語(yǔ)言提供的整數(shù)類(lèi)型的值總是在一定的范圍內(nèi)。的值總是在一定的范圍內(nèi)。 c#定義了定義了8種整數(shù)類(lèi)型,劃分的根據(jù)是這些種整數(shù)類(lèi)型,劃分的根據(jù)是這些類(lèi)型所占存儲(chǔ)器的位數(shù)。例如,一個(gè)類(lèi)型所占存儲(chǔ)器的位數(shù)。例如,一個(gè)8位的位的整數(shù)類(lèi)型可以表示整數(shù)類(lèi)型可以表示28=256個(gè)數(shù)值。個(gè)數(shù)值。11sophie整數(shù)類(lèi)型如表所示。整數(shù)類(lèi)型如表所示。12sophiev2. 浮點(diǎn)類(lèi)型v實(shí)數(shù)在實(shí)數(shù)在c#中采用浮點(diǎn)類(lèi)型的數(shù)據(jù)來(lái)表示。中采用浮點(diǎn)類(lèi)型的數(shù)據(jù)來(lái)表示。v浮點(diǎn)類(lèi)型的數(shù)據(jù)包括兩種:浮點(diǎn)類(lèi)型的數(shù)據(jù)包括兩種

8、:?jiǎn)尉雀↑c(diǎn)型(float)和和雙精度浮點(diǎn)型(double),其區(qū)別在于取值范圍),其區(qū)別在于取值范圍和精度不同。和精度不同。13sophie3.2.1 值類(lèi)型v浮點(diǎn)類(lèi)型數(shù)據(jù)的精度(小數(shù)點(diǎn)后所保留的有效數(shù)浮點(diǎn)類(lèi)型數(shù)據(jù)的精度(小數(shù)點(diǎn)后所保留的有效數(shù)字)和取值范圍如表字)和取值范圍如表3-3所示。所示。14sophie 3. 小數(shù)類(lèi)型 小數(shù)類(lèi)型(小數(shù)類(lèi)型(decimal)數(shù)據(jù)是高精度的類(lèi)型數(shù)據(jù),占用)數(shù)據(jù)是高精度的類(lèi)型數(shù)據(jù),占用16個(gè)字節(jié),主要是為了滿(mǎn)足需要高精度的財(cái)務(wù)和金融方個(gè)字節(jié),主要是為了滿(mǎn)足需要高精度的財(cái)務(wù)和金融方面的計(jì)算。面的計(jì)算。 小數(shù)類(lèi)型數(shù)據(jù)的取值范圍和精度如下:小數(shù)類(lèi)型數(shù)據(jù)的取值范

9、圍和精度如下: 小數(shù)類(lèi)型:取值范圍在小數(shù)類(lèi)型:取值范圍在1.0 x 10-287.9 x 1028之間,精之間,精度為度為29位數(shù)。位數(shù)。 要注意的是,小數(shù)類(lèi)型數(shù)據(jù)的后面必須跟要注意的是,小數(shù)類(lèi)型數(shù)據(jù)的后面必須跟m或者或者m后綴后綴來(lái)表示它是來(lái)表示它是decimal類(lèi)型的,如類(lèi)型的,如3.15m,0.35m等,否則等,否則就會(huì)被視為標(biāo)準(zhǔn)的浮點(diǎn)類(lèi)型數(shù)據(jù),導(dǎo)致數(shù)據(jù)類(lèi)型不匹配。就會(huì)被視為標(biāo)準(zhǔn)的浮點(diǎn)類(lèi)型數(shù)據(jù),導(dǎo)致數(shù)據(jù)類(lèi)型不匹配。15sophiev提示:在在c#中,可以通過(guò)給數(shù)值常數(shù)加后綴的方法中,可以通過(guò)給數(shù)值常數(shù)加后綴的方法來(lái)指定數(shù)值常數(shù)的類(lèi)型,可以使用的數(shù)值常數(shù)后綴來(lái)指定數(shù)值常數(shù)的類(lèi)型,可以使用的

10、數(shù)值常數(shù)后綴有以下幾種:有以下幾種:(1)u(或者(或者u)后綴:加在整型常數(shù)后面,代表)后綴:加在整型常數(shù)后面,代表該常數(shù)是該常數(shù)是uint類(lèi)型或者類(lèi)型或者ulong類(lèi)型。類(lèi)型。(2)l(或者(或者l)后綴:加在整型常數(shù)后面,代表該)后綴:加在整型常數(shù)后面,代表該常數(shù)是常數(shù)是long類(lèi)型或者類(lèi)型或者ulong類(lèi)型。類(lèi)型。(3)ul(或者(或者ul、ul、ul、lu、lu、lu)后綴:)后綴:加在整型常數(shù)后面,代表該常數(shù)是加在整型常數(shù)后面,代表該常數(shù)是ulong類(lèi)型。類(lèi)型。16sophie(4)f(或者(或者f)后綴:加在任何一種數(shù)值常數(shù)后面,)后綴:加在任何一種數(shù)值常數(shù)后面,代表該常數(shù)是代表

11、該常數(shù)是float類(lèi)型。類(lèi)型。(5)d(或者(或者d)后綴:加在任何一種數(shù)值常數(shù)后)后綴:加在任何一種數(shù)值常數(shù)后面,代表該常數(shù)是面,代表該常數(shù)是double類(lèi)型。類(lèi)型。(6)m(或者(或者m)后綴:加在任何一種數(shù)值常數(shù)后)后綴:加在任何一種數(shù)值常數(shù)后面,代表該常數(shù)是面,代表該常數(shù)是decimal類(lèi)型。類(lèi)型。17sophiev示例如下:示例如下:137f 代表代表float類(lèi)型的數(shù)值類(lèi)型的數(shù)值137.0137u 代表代表unit類(lèi)型的數(shù)值類(lèi)型的數(shù)值137137.2m 代表代表decimal類(lèi)型的數(shù)值類(lèi)型的數(shù)值137.2137.22 代表代表double類(lèi)型的數(shù)值類(lèi)型的數(shù)值137.22137 代表

12、代表int類(lèi)型的數(shù)值類(lèi)型的數(shù)值13718sophie 4. 字符類(lèi)型 c#中的字符類(lèi)型數(shù)據(jù)采用中的字符類(lèi)型數(shù)據(jù)采用unicode字符集。字符類(lèi)型的類(lèi)字符集。字符類(lèi)型的類(lèi)型標(biāo)識(shí)符是型標(biāo)識(shí)符是char,因此也可稱(chēng)為,因此也可稱(chēng)為char類(lèi)型。類(lèi)型。 凡是在單引號(hào)中的一個(gè)字符,就構(gòu)成一個(gè)字符常數(shù),如下凡是在單引號(hào)中的一個(gè)字符,就構(gòu)成一個(gè)字符常數(shù),如下所示:所示: a、o、*、 9 在表示一個(gè)字符常數(shù)時(shí),在表示一個(gè)字符常數(shù)時(shí),單引號(hào)內(nèi)的有效字符必須且只能內(nèi)的有效字符必須且只能有一個(gè),并且不能是單引號(hào)或者反斜杠(有一個(gè),并且不能是單引號(hào)或者反斜杠()等。)等。 為了表示單引號(hào)和反斜杠等特殊的字符常數(shù),提

13、供了為了表示單引號(hào)和反斜杠等特殊的字符常數(shù),提供了轉(zhuǎn)義符,在需要表示這些特殊常數(shù)的地方,可以使用轉(zhuǎn)義符來(lái),在需要表示這些特殊常數(shù)的地方,可以使用轉(zhuǎn)義符來(lái)替代這些特殊的字符。常用的轉(zhuǎn)義符如表替代這些特殊的字符。常用的轉(zhuǎn)義符如表3-4所示。所示。19sophiev常用的常用的轉(zhuǎn)義符轉(zhuǎn)義符如表如表3-4所示。所示。20sophiev5. 布爾類(lèi)型v布爾類(lèi)型數(shù)據(jù)用于表示邏輯真和邏輯假,布爾類(lèi)型數(shù)據(jù)用于表示邏輯真和邏輯假,布爾類(lèi)型的類(lèi)型標(biāo)識(shí)符是布爾類(lèi)型的類(lèi)型標(biāo)識(shí)符是bool。v布爾類(lèi)型常數(shù)只有兩種值:布爾類(lèi)型常數(shù)只有兩種值:true(代表(代表“真真”)和)和false(代表(代表“假假”)。)。21s

14、ophie2.2 引用類(lèi)型 在在c#中,引用類(lèi)型的中,引用類(lèi)型的引入主要是因?yàn)橹殿?lèi)型比較簡(jiǎn)單,引入主要是因?yàn)橹殿?lèi)型比較簡(jiǎn)單,不能描述結(jié)構(gòu)復(fù)雜、抽象能力比較強(qiáng)的數(shù)據(jù)不能描述結(jié)構(gòu)復(fù)雜、抽象能力比較強(qiáng)的數(shù)據(jù)。引用類(lèi)型引用類(lèi)型,其含義是該類(lèi)型的變量不直接存儲(chǔ)所包含的,其含義是該類(lèi)型的變量不直接存儲(chǔ)所包含的值,而是存儲(chǔ)當(dāng)前引用值的地址,因此引用類(lèi)型數(shù)據(jù)的值,而是存儲(chǔ)當(dāng)前引用值的地址,因此引用類(lèi)型數(shù)據(jù)的值會(huì)隨所指向的值的不同而變化,同一個(gè)數(shù)據(jù)也可以有值會(huì)隨所指向的值的不同而變化,同一個(gè)數(shù)據(jù)也可以有多個(gè)引用。多個(gè)引用。 這與簡(jiǎn)單類(lèi)型數(shù)據(jù)是不同的,簡(jiǎn)單類(lèi)型數(shù)據(jù)存儲(chǔ)的是自這與簡(jiǎn)單類(lèi)型數(shù)據(jù)是不同的,簡(jiǎn)單類(lèi)型數(shù)據(jù)存

15、儲(chǔ)的是自身的值,而引用類(lèi)型存儲(chǔ)的是將自身的值所直接指向到身的值,而引用類(lèi)型存儲(chǔ)的是將自身的值所直接指向到某個(gè)對(duì)象的值。它就像一面鏡子一樣,雖然從鏡子可以某個(gè)對(duì)象的值。它就像一面鏡子一樣,雖然從鏡子可以看到物體,但物體并不在鏡子中,只不過(guò)是物體的反射看到物體,但物體并不在鏡子中,只不過(guò)是物體的反射而已。而已。22sophievc#的引用的引用引用類(lèi)型引用類(lèi)型有有4種:種:類(lèi)類(lèi)型類(lèi)類(lèi)型、數(shù)組類(lèi)型數(shù)組類(lèi)型、接接口類(lèi)型口類(lèi)型和和委托類(lèi)型委托類(lèi)型。v類(lèi)(類(lèi)(class)是面向?qū)ο缶幊痰幕締挝?。它是一是面向?qū)ο缶幊痰幕締挝?。它是一種包含數(shù)據(jù)成員、函數(shù)成員的數(shù)據(jù)結(jié)構(gòu)。類(lèi)的數(shù)據(jù)種包含數(shù)據(jù)成員、函數(shù)成員的數(shù)

16、據(jù)結(jié)構(gòu)。類(lèi)的數(shù)據(jù)成員有常量、域和事件,函數(shù)成員包括方法、屬性、成員有常量、域和事件,函數(shù)成員包括方法、屬性、構(gòu)造函數(shù)和析構(gòu)函數(shù)等。構(gòu)造函數(shù)和析構(gòu)函數(shù)等。v下面將介紹經(jīng)常用到的兩個(gè)類(lèi):下面將介紹經(jīng)常用到的兩個(gè)類(lèi):object(對(duì)象類(lèi)型)(對(duì)象類(lèi)型)和和string(字符串類(lèi)型)(字符串類(lèi)型)。23sophie 1. object類(lèi) 在在c#中,中,object類(lèi)是系統(tǒng)提供的基類(lèi)型,是所有類(lèi)型的基類(lèi)是系統(tǒng)提供的基類(lèi)型,是所有類(lèi)型的基類(lèi),所有的類(lèi)型都直接或間接派生于對(duì)象類(lèi)型。類(lèi),所有的類(lèi)型都直接或間接派生于對(duì)象類(lèi)型。 因此,對(duì)于任何一個(gè)因此,對(duì)于任何一個(gè)object變量,均可以賦給任何類(lèi)型的變量,均

17、可以賦給任何類(lèi)型的值。值。 int x1 = 10; object obj1; obj1 = x1; object obj2 = string; 對(duì)于對(duì)于object類(lèi)型的變量,聲明時(shí)必須使用類(lèi)型的變量,聲明時(shí)必須使用object關(guān)鍵字。關(guān)鍵字。24sophiev2. string類(lèi)v在在c#中,有一個(gè)用于操作字符串?dāng)?shù)據(jù)的中,有一個(gè)用于操作字符串?dāng)?shù)據(jù)的string類(lèi),類(lèi),string類(lèi)直接派生于類(lèi)直接派生于object類(lèi),類(lèi),且它是被密封的,這意味著不能從其派生出且它是被密封的,這意味著不能從其派生出類(lèi)。類(lèi)。v一個(gè)字符串是被一對(duì)雙引號(hào)所包含的一系列一個(gè)字符串是被一對(duì)雙引號(hào)所包含的一系列字符。例

18、如,字符。例如,hello world!就是一個(gè)字符就是一個(gè)字符串。串。vstring類(lèi)的用法十分簡(jiǎn)單:類(lèi)的用法十分簡(jiǎn)單:string str1=hello,;string str2=china!“;25sophie合并字符串合并字符串也很簡(jiǎn)單:也很簡(jiǎn)單: string str3=str1+str2; 如果想訪問(wèn)單個(gè)字符,所要做的就是訪問(wèn)下標(biāo):如果想訪問(wèn)單個(gè)字符,所要做的就是訪問(wèn)下標(biāo): char c=str30; 當(dāng)當(dāng)比較兩個(gè)字符串是否相等比較兩個(gè)字符串是否相等時(shí),簡(jiǎn)單地使用時(shí),簡(jiǎn)單地使用“=”比較比較操作符。操作符。if(str1=str2) .26sophievc#支持以下兩種形式的字符串

19、常數(shù)。支持以下兩種形式的字符串常數(shù)。v(1)常規(guī)字符串常數(shù)。放在雙引號(hào)間的一串。放在雙引號(hào)間的一串字符,就是一個(gè)常規(guī)字符串常數(shù)。如前面所字符,就是一個(gè)常規(guī)字符串常數(shù)。如前面所示的,即為常規(guī)字符串常數(shù)。示的,即為常規(guī)字符串常數(shù)。v除了普通的字符,一個(gè)字符串常數(shù)也允許包除了普通的字符,一個(gè)字符串常數(shù)也允許包含一個(gè)或多個(gè)轉(zhuǎn)義符。例如在下例中,使用含一個(gè)或多個(gè)轉(zhuǎn)義符。例如在下例中,使用了了n和和t轉(zhuǎn)義符。轉(zhuǎn)義符。27sophie3.2.2 引用類(lèi)型【例3-1】在字符串中,在字符串中,轉(zhuǎn)義符的應(yīng)用示范。的應(yīng)用示范。 程序代碼如下:程序代碼如下:using system; class stringdemo

20、 static void main() console.writeline(first linensecond line);/使使用用n轉(zhuǎn)義符產(chǎn)生新的一行轉(zhuǎn)義符產(chǎn)生新的一行 console.writeline(atbtc); /使用使用t轉(zhuǎn)義符排轉(zhuǎn)義符排列輸出列輸出 console.writeline(dtetf); 程序運(yùn)行的結(jié)果如圖程序運(yùn)行的結(jié)果如圖3-1所示。所示。28sophie3.2.2 引用類(lèi)型v【例3-1】在字符串中,在字符串中,轉(zhuǎn)義符的應(yīng)用示范。的應(yīng)用示范。v程序運(yùn)行的結(jié)果如圖程序運(yùn)行的結(jié)果如圖3-1所示。所示。29sophiev(2)逐字字符串常數(shù)。 逐字字符串常數(shù)以逐字字符

21、串常數(shù)以“”開(kāi)頭,后跟一對(duì)雙引號(hào),開(kāi)頭,后跟一對(duì)雙引號(hào),在雙引號(hào)中放入字符。如:在雙引號(hào)中放入字符。如:中國(guó)人中國(guó)人;hello world!“;30sophie3.2.2 引用類(lèi)型v逐字字符串常數(shù)同常規(guī)字符串常數(shù)的區(qū)別在于,在逐字字符串常數(shù)同常規(guī)字符串常數(shù)的區(qū)別在于,在逐字字符串常數(shù)的雙引號(hào)中,每個(gè)字符都代表其原逐字字符串常數(shù)的雙引號(hào)中,每個(gè)字符都代表其原始的含義,在逐字字符串常數(shù)中不能使用轉(zhuǎn)義字符。始的含義,在逐字字符串常數(shù)中不能使用轉(zhuǎn)義字符。即,逐字字符串常數(shù)中雙引號(hào)內(nèi)的內(nèi)容在被接受時(shí)即,逐字字符串常數(shù)中雙引號(hào)內(nèi)的內(nèi)容在被接受時(shí)是不變的,并且可以跨越多行。是不變的,并且可以跨越多行。v所

22、以,在逐字字符串中,以所以,在逐字字符串中,以“”開(kāi)始的字符被當(dāng)作開(kāi)始的字符被當(dāng)作正常的字符處理,而不是轉(zhuǎn)義符。正常的字符處理,而不是轉(zhuǎn)義符。v但是要注意的是,如果要包含雙引號(hào)(但是要注意的是,如果要包含雙引號(hào)(“),就必),就必須在一行中使用兩個(gè)雙引號(hào)(須在一行中使用兩個(gè)雙引號(hào)(”“”“)。)。31sophie(2)逐字字符串常數(shù)。 string str1 = hello,china; /定義規(guī)則字符串常數(shù):定義規(guī)則字符串常數(shù):hello,china string str2 = “hello,china”; /定義逐字字符串常數(shù):定義逐字字符串常數(shù):hello,china string st

23、r3 = hellotworld; /hello world string str4 = hellotworld; /hellotworld string str5 = jack said hello to you; /jack said hello to you string str6 = jack said hello to you; /jack said hello to you32sophiev簡(jiǎn)單來(lái)說(shuō),規(guī)則字符串要對(duì)字符串的轉(zhuǎn)義序列進(jìn)行簡(jiǎn)單來(lái)說(shuō),規(guī)則字符串要對(duì)字符串的轉(zhuǎn)義序列進(jìn)行解釋?zhuān)鹱肿址藢?duì)雙引號(hào)進(jìn)行解釋之外,解釋?zhuān)鹱肿址藢?duì)雙引號(hào)進(jìn)行解釋之外,對(duì)其它字符,無(wú)需解

24、釋?zhuān)脩?hù)定義成什么樣,顯示對(duì)其它字符,無(wú)需解釋?zhuān)脩?hù)定義成什么樣,顯示結(jié)果就是什么樣。結(jié)果就是什么樣。33sophiev【例3-2】如何定義規(guī)則字符串和逐字字符串。v 程序代碼如下所示:using system; class stringdemo static void main() string str1 = one linetwo linentthree line; string str2 = one linetwo linentthree line; console.writeline(str1); console.writeline(-); console.writeline(str2

25、); 34sophiev【例3-2】如何定義規(guī)則字符串和逐字字符串。如何定義規(guī)則字符串和逐字字符串。v程序的運(yùn)行結(jié)果如圖程序的運(yùn)行結(jié)果如圖3-2所示。所示。35sophie2.3 類(lèi)型轉(zhuǎn)換 數(shù)據(jù)類(lèi)型在一定條件下是可以相互轉(zhuǎn)換的,如將數(shù)據(jù)類(lèi)型在一定條件下是可以相互轉(zhuǎn)換的,如將int類(lèi)型數(shù)據(jù)轉(zhuǎn)換成類(lèi)型數(shù)據(jù)轉(zhuǎn)換成double類(lèi)型數(shù)據(jù)。類(lèi)型數(shù)據(jù)。 在在c#中,允許兩種轉(zhuǎn)換方式:中,允許兩種轉(zhuǎn)換方式:隱式轉(zhuǎn)換隱式轉(zhuǎn)換(implicit conversions)和)和顯式轉(zhuǎn)換顯式轉(zhuǎn)換(explicit conversions)。)。36sophie 1. 隱式轉(zhuǎn)換 隱式轉(zhuǎn)換是系統(tǒng)默認(rèn)的,不需要加以聲明就可

26、以隱式轉(zhuǎn)換是系統(tǒng)默認(rèn)的,不需要加以聲明就可以進(jìn)行轉(zhuǎn)換。進(jìn)行轉(zhuǎn)換。 在隱式轉(zhuǎn)換過(guò)程中,編譯器不需要對(duì)轉(zhuǎn)換進(jìn)行詳在隱式轉(zhuǎn)換過(guò)程中,編譯器不需要對(duì)轉(zhuǎn)換進(jìn)行詳細(xì)的檢查就能安全地執(zhí)行轉(zhuǎn)換,例如數(shù)據(jù)從細(xì)的檢查就能安全地執(zhí)行轉(zhuǎn)換,例如數(shù)據(jù)從int類(lèi)型到類(lèi)型到long類(lèi)型的轉(zhuǎn)換。類(lèi)型的轉(zhuǎn)換。37sophiev1. 隱式轉(zhuǎn)換v其中,從其中,從int,uint或或long到到float以及從以及從long到到double的轉(zhuǎn)換可能會(huì)導(dǎo)致精度下降,的轉(zhuǎn)換可能會(huì)導(dǎo)致精度下降,但決不會(huì)引起數(shù)量上的丟失。其它的隱式數(shù)但決不會(huì)引起數(shù)量上的丟失。其它的隱式數(shù)值轉(zhuǎn)換則不會(huì)有任何信息丟失。值轉(zhuǎn)換則不會(huì)有任何信息丟失。v隱式數(shù)據(jù)轉(zhuǎn)

27、換的使用方法如下所示:隱式數(shù)據(jù)轉(zhuǎn)換的使用方法如下所示:int a=10; /a為整型數(shù)據(jù)為整型數(shù)據(jù)long b=a; /b為長(zhǎng)整型數(shù)據(jù)為長(zhǎng)整型數(shù)據(jù)double c=a; /c為雙精度浮點(diǎn)型數(shù)據(jù)為雙精度浮點(diǎn)型數(shù)據(jù)38sophie 2. 顯式轉(zhuǎn)換 顯式轉(zhuǎn)換又稱(chēng)為強(qiáng)制類(lèi)型轉(zhuǎn)換,與隱式轉(zhuǎn)換相反,顯顯式轉(zhuǎn)換又稱(chēng)為強(qiáng)制類(lèi)型轉(zhuǎn)換,與隱式轉(zhuǎn)換相反,顯式轉(zhuǎn)換需要用戶(hù)明確地指定轉(zhuǎn)換類(lèi)型。式轉(zhuǎn)換需要用戶(hù)明確地指定轉(zhuǎn)換類(lèi)型。 顯式轉(zhuǎn)換可以將一數(shù)值類(lèi)型強(qiáng)制轉(zhuǎn)換成另一種數(shù)據(jù)類(lèi)顯式轉(zhuǎn)換可以將一數(shù)值類(lèi)型強(qiáng)制轉(zhuǎn)換成另一種數(shù)據(jù)類(lèi)型,其格式如下:型,其格式如下:(類(lèi)型標(biāo)識(shí)符類(lèi)型標(biāo)識(shí)符) 表達(dá)式表達(dá)式 上式的含義為:將表達(dá)式的值的類(lèi)

28、型轉(zhuǎn)換為類(lèi)型標(biāo)識(shí)上式的含義為:將表達(dá)式的值的類(lèi)型轉(zhuǎn)換為類(lèi)型標(biāo)識(shí)符的類(lèi)型。比如:符的類(lèi)型。比如:(int)5.17/把把double類(lèi)型的類(lèi)型的5.17轉(zhuǎn)換成轉(zhuǎn)換成int類(lèi)型類(lèi)型39sophiev這種類(lèi)型轉(zhuǎn)換有可能會(huì)丟失信息或?qū)е庐惓伋觯D(zhuǎn)這種類(lèi)型轉(zhuǎn)換有可能會(huì)丟失信息或?qū)е庐惓伋?,轉(zhuǎn)換按照下列規(guī)則進(jìn)行:換按照下列規(guī)則進(jìn)行:(1)對(duì)于從一種整型到另一種整型的轉(zhuǎn)換,編譯器將)對(duì)于從一種整型到另一種整型的轉(zhuǎn)換,編譯器將針對(duì)轉(zhuǎn)換進(jìn)行溢出檢測(cè),如果沒(méi)有發(fā)生溢出,轉(zhuǎn)換成針對(duì)轉(zhuǎn)換進(jìn)行溢出檢測(cè),如果沒(méi)有發(fā)生溢出,轉(zhuǎn)換成功,否則拋出一個(gè)轉(zhuǎn)換異常。功,否則拋出一個(gè)轉(zhuǎn)換異常。(2)對(duì)于從)對(duì)于從float,dou

29、ble或或decimal到整型的轉(zhuǎn)換,到整型的轉(zhuǎn)換,將通過(guò)舍入到最接近的整型值作為轉(zhuǎn)換的結(jié)果。如果將通過(guò)舍入到最接近的整型值作為轉(zhuǎn)換的結(jié)果。如果這個(gè)整型值超出了目標(biāo)類(lèi)型的值域,則將拋出一個(gè)轉(zhuǎn)這個(gè)整型值超出了目標(biāo)類(lèi)型的值域,則將拋出一個(gè)轉(zhuǎn)換異常。換異常。40sophie(3)對(duì)于從)對(duì)于從double到到float的轉(zhuǎn)換,的轉(zhuǎn)換,double值通過(guò)舍入值通過(guò)舍入取最接近的取最接近的float值。如果這個(gè)值太小,結(jié)果將變成正值。如果這個(gè)值太小,結(jié)果將變成正0或負(fù)或負(fù)0;如果這個(gè)值太大,將變成正無(wú)窮或負(fù)無(wú)窮。;如果這個(gè)值太大,將變成正無(wú)窮或負(fù)無(wú)窮。(4)對(duì)于從)對(duì)于從float或或double到到d

30、ecimal的轉(zhuǎn)換,將轉(zhuǎn)換的轉(zhuǎn)換,將轉(zhuǎn)換成小數(shù)形式并通過(guò)舍入取到小數(shù)點(diǎn)后成小數(shù)形式并通過(guò)舍入取到小數(shù)點(diǎn)后28位。如果值太位。如果值太小,則結(jié)果為小,則結(jié)果為0;如果太大以致不能用小數(shù)表示,或;如果太大以致不能用小數(shù)表示,或是無(wú)窮或是無(wú)窮或null,則將拋出轉(zhuǎn)換異常。,則將拋出轉(zhuǎn)換異常。(5)對(duì)于從)對(duì)于從decimal到到float或或double的轉(zhuǎn)換,小數(shù)的的轉(zhuǎn)換,小數(shù)的值通過(guò)舍入取最接近的值。這種轉(zhuǎn)換可能會(huì)丟失精度,值通過(guò)舍入取最接近的值。這種轉(zhuǎn)換可能會(huì)丟失精度,但不會(huì)引起異常。但不會(huì)引起異常。41sophiev顯式數(shù)據(jù)轉(zhuǎn)換的使用方法如下所示:顯式數(shù)據(jù)轉(zhuǎn)換的使用方法如下所示:(int)

31、7.18m/deimal類(lèi)型的數(shù)值類(lèi)型的數(shù)值7.18轉(zhuǎn)換為轉(zhuǎn)換為int類(lèi)型的數(shù)類(lèi)型的數(shù)值值7v轉(zhuǎn)換的結(jié)果為轉(zhuǎn)換的結(jié)果為7。vc#中還經(jīng)常要進(jìn)行中還經(jīng)常要進(jìn)行string類(lèi)型和其他簡(jiǎn)單類(lèi)型的轉(zhuǎn)類(lèi)型和其他簡(jiǎn)單類(lèi)型的轉(zhuǎn)換,這里需要使用框架類(lèi)庫(kù)中提供的一些方法。換,這里需要使用框架類(lèi)庫(kù)中提供的一些方法。42sophiev3. string類(lèi)型轉(zhuǎn)換為其他類(lèi)型v整型、浮點(diǎn)型、字符型和布爾類(lèi)型都對(duì)應(yīng)有一個(gè)結(jié)整型、浮點(diǎn)型、字符型和布爾類(lèi)型都對(duì)應(yīng)有一個(gè)結(jié)構(gòu)類(lèi)型,該結(jié)構(gòu)類(lèi)型中提供構(gòu)類(lèi)型,該結(jié)構(gòu)類(lèi)型中提供parse方法,可以把,可以把string類(lèi)型轉(zhuǎn)換成相應(yīng)的類(lèi)型。類(lèi)型轉(zhuǎn)換成相應(yīng)的類(lèi)型。v例如,要把例如,要把st

32、ring類(lèi)型轉(zhuǎn)換成類(lèi)型轉(zhuǎn)換成int類(lèi)型,則有相應(yīng)的類(lèi)型,則有相應(yīng)的int.parse(string)方法,如:方法,如:string str = 123;int i = int.parse(str);v則則i的值為的值為123。43sophiev4. 其他類(lèi)型轉(zhuǎn)換為string類(lèi)型v計(jì)算后的數(shù)據(jù)如果要以文本的方式輸出,如在文本計(jì)算后的數(shù)據(jù)如果要以文本的方式輸出,如在文本框中顯示計(jì)算后的數(shù)據(jù),則需要將數(shù)值數(shù)據(jù)轉(zhuǎn)換成框中顯示計(jì)算后的數(shù)據(jù),則需要將數(shù)值數(shù)據(jù)轉(zhuǎn)換成string類(lèi)型,轉(zhuǎn)換方法是執(zhí)行類(lèi)型,轉(zhuǎn)換方法是執(zhí)行tostring方法。例如:。例如:int j = 5 * 8;string str =

33、 5 * 8的積是:的積是: + j.tostring();v除了使用相應(yīng)類(lèi)的除了使用相應(yīng)類(lèi)的parse()方法之外,還可以使用方法之外,還可以使用system.convert類(lèi)的對(duì)應(yīng)方法將數(shù)字轉(zhuǎn)換為相應(yīng)類(lèi)的對(duì)應(yīng)方法將數(shù)字轉(zhuǎn)換為相應(yīng)的值。的值。44sophie 2.4 裝箱與拆箱裝箱裝箱(boxing)和)和拆箱拆箱(unboxing)是)是c#類(lèi)型系統(tǒng)中重類(lèi)型系統(tǒng)中重要的概念。要的概念。 它允許將任何類(lèi)型的數(shù)據(jù)轉(zhuǎn)換為對(duì)象,同時(shí)也允許任何類(lèi)它允許將任何類(lèi)型的數(shù)據(jù)轉(zhuǎn)換為對(duì)象,同時(shí)也允許任何類(lèi)型的對(duì)象轉(zhuǎn)換到與之兼容的數(shù)據(jù)類(lèi)型。型的對(duì)象轉(zhuǎn)換到與之兼容的數(shù)據(jù)類(lèi)型。 經(jīng)過(guò)裝箱操作,使得任何類(lèi)型的數(shù)據(jù)都可

34、以看做是對(duì)象的經(jīng)過(guò)裝箱操作,使得任何類(lèi)型的數(shù)據(jù)都可以看做是對(duì)象的類(lèi)型系統(tǒng)。反之,拆箱是裝箱的逆過(guò)程。必須注意的是:類(lèi)型系統(tǒng)。反之,拆箱是裝箱的逆過(guò)程。必須注意的是:裝箱轉(zhuǎn)換和拆箱轉(zhuǎn)換過(guò)程中必須遵循類(lèi)型兼容的原則,否裝箱轉(zhuǎn)換和拆箱轉(zhuǎn)換過(guò)程中必須遵循類(lèi)型兼容的原則,否則轉(zhuǎn)換會(huì)失敗。則轉(zhuǎn)換會(huì)失敗。45sophiev 1裝箱轉(zhuǎn)換裝箱轉(zhuǎn)換v 裝箱轉(zhuǎn)換是指將一個(gè)值類(lèi)型的數(shù)據(jù)隱式地轉(zhuǎn)換成一個(gè)對(duì)象類(lèi)裝箱轉(zhuǎn)換是指將一個(gè)值類(lèi)型的數(shù)據(jù)隱式地轉(zhuǎn)換成一個(gè)對(duì)象類(lèi)型(型(object)的數(shù)據(jù),或者把這個(gè)值類(lèi)型數(shù)據(jù)隱式轉(zhuǎn)換成一)的數(shù)據(jù),或者把這個(gè)值類(lèi)型數(shù)據(jù)隱式轉(zhuǎn)換成一個(gè)被該值類(lèi)型數(shù)據(jù)對(duì)應(yīng)的接口類(lèi)型數(shù)據(jù)。把一個(gè)值類(lèi)型裝箱,個(gè)被

35、該值類(lèi)型數(shù)據(jù)對(duì)應(yīng)的接口類(lèi)型數(shù)據(jù)。把一個(gè)值類(lèi)型裝箱,就是創(chuàng)建一個(gè)就是創(chuàng)建一個(gè)object類(lèi)型的實(shí)例,并把該值類(lèi)型的值復(fù)制給類(lèi)型的實(shí)例,并把該值類(lèi)型的值復(fù)制給該該object。v 例如,下面的語(yǔ)句就執(zhí)行了裝箱轉(zhuǎn)換:例如,下面的語(yǔ)句就執(zhí)行了裝箱轉(zhuǎn)換: int i=108; object obj=i;v 上面的語(yǔ)句中,第上面的語(yǔ)句中,第1條語(yǔ)句先聲明一個(gè)整型變量條語(yǔ)句先聲明一個(gè)整型變量i并對(duì)其賦值,并對(duì)其賦值,第第2條語(yǔ)句則先創(chuàng)建一個(gè)條語(yǔ)句則先創(chuàng)建一個(gè)object類(lèi)型的實(shí)例類(lèi)型的實(shí)例obj,然后將,然后將i的值的值復(fù)制給復(fù)制給obj。46sophiev在執(zhí)行裝箱轉(zhuǎn)換時(shí),也可以使用顯式轉(zhuǎn)換,例如:在執(zhí)行

36、裝箱轉(zhuǎn)換時(shí),也可以使用顯式轉(zhuǎn)換,例如:int i=120;object obj=(object) i;47sophie【例3-3】演示裝箱轉(zhuǎn)換。演示裝箱轉(zhuǎn)換。程序代碼如下:程序代碼如下:using system; class boxingdemo static void main() console.writeline(裝箱轉(zhuǎn)換演示:裝箱轉(zhuǎn)換演示:); int i = 120; object obj = i; i = 300; console.writeline(obj=0, obj); console.writeline(i=0, i); 48sophiev【例3-3】演示裝箱轉(zhuǎn)換。演示裝箱

37、轉(zhuǎn)換。v該程序執(zhí)行后,輸出結(jié)果如下:該程序執(zhí)行后,輸出結(jié)果如下:裝箱轉(zhuǎn)換演示:裝箱轉(zhuǎn)換演示:obj=120i=300v說(shuō)明:從上面的輸出結(jié)果可知,通過(guò)裝箱轉(zhuǎn)換,可從上面的輸出結(jié)果可知,通過(guò)裝箱轉(zhuǎn)換,可以把一個(gè)整型值復(fù)制給一個(gè)以把一個(gè)整型值復(fù)制給一個(gè)object類(lèi)型的實(shí)例,而類(lèi)型的實(shí)例,而被裝箱的整型變量自身的數(shù)值并不會(huì)受到裝箱的影被裝箱的整型變量自身的數(shù)值并不會(huì)受到裝箱的影響。響。49sophiev2拆箱轉(zhuǎn)換拆箱轉(zhuǎn)換v和裝箱相反,拆箱轉(zhuǎn)換是指將一個(gè)對(duì)象類(lèi)型的數(shù)據(jù)和裝箱相反,拆箱轉(zhuǎn)換是指將一個(gè)對(duì)象類(lèi)型的數(shù)據(jù)顯式地轉(zhuǎn)換成一個(gè)值類(lèi)型數(shù)據(jù),或者將一個(gè)接口類(lèi)顯式地轉(zhuǎn)換成一個(gè)值類(lèi)型數(shù)據(jù),或者將一個(gè)接口類(lèi)型

38、顯式地轉(zhuǎn)換成一個(gè)執(zhí)行該接口的值類(lèi)型數(shù)據(jù)。型顯式地轉(zhuǎn)換成一個(gè)執(zhí)行該接口的值類(lèi)型數(shù)據(jù)。v拆箱操作包括兩步,首先檢查對(duì)象實(shí)例,確保其是拆箱操作包括兩步,首先檢查對(duì)象實(shí)例,確保其是給定值類(lèi)型的一個(gè)裝箱值,然后把實(shí)例的值復(fù)制到給定值類(lèi)型的一個(gè)裝箱值,然后把實(shí)例的值復(fù)制到值類(lèi)型數(shù)據(jù)中。值類(lèi)型數(shù)據(jù)中。50sophiev例如,下面的語(yǔ)句就執(zhí)行了拆箱轉(zhuǎn)換:例如,下面的語(yǔ)句就執(zhí)行了拆箱轉(zhuǎn)換:object obj=225;int i=(int)obj;v上面的語(yǔ)句在執(zhí)行過(guò)程中,首先檢查上面的語(yǔ)句在執(zhí)行過(guò)程中,首先檢查obj這個(gè)這個(gè)object實(shí)例的值是否為給定值類(lèi)型的裝箱值,由于實(shí)例的值是否為給定值類(lèi)型的裝箱值,由

39、于ojb的值的值為為225,給定的值類(lèi)型為整型,所以滿(mǎn)足拆箱轉(zhuǎn)換的,給定的值類(lèi)型為整型,所以滿(mǎn)足拆箱轉(zhuǎn)換的條件,會(huì)將條件,會(huì)將obj的值復(fù)制給整型變量的值復(fù)制給整型變量i。v需要注意的是,拆箱轉(zhuǎn)換必須需要執(zhí)行顯式轉(zhuǎn)換,需要注意的是,拆箱轉(zhuǎn)換必須需要執(zhí)行顯式轉(zhuǎn)換,這是與裝箱轉(zhuǎn)換不同之處。這是與裝箱轉(zhuǎn)換不同之處。51sophiev【例3-4】演示拆箱轉(zhuǎn)換。演示拆箱轉(zhuǎn)換。v 程序代碼如下:程序代碼如下:using system; class unboxingdemo static void main() int i=225; object obj = i; /裝箱轉(zhuǎn)換裝箱轉(zhuǎn)換 int j = (in

40、t)obj; /拆箱轉(zhuǎn)換拆箱轉(zhuǎn)換 console.writeline(i=0nobj=1nj=2, i, obj, j); 52sophiev【例3-4】演示拆箱轉(zhuǎn)換。演示拆箱轉(zhuǎn)換。v該程序執(zhí)行后,輸出結(jié)果如下:該程序執(zhí)行后,輸出結(jié)果如下:i=225obj=225;j=22553sophie3 常量和變量常量和變量v正確定義和使用正確定義和使用常量常量及及變量變量,會(huì)使開(kāi),會(huì)使開(kāi)發(fā)人員在編程過(guò)程中減少錯(cuò)誤,提高發(fā)人員在編程過(guò)程中減少錯(cuò)誤,提高程序開(kāi)發(fā)效率。程序開(kāi)發(fā)效率。54sophie 3.1 常量v常量常量是指那些基于可讀格式的固定數(shù)值,在程序的是指那些基于可讀格式的固定數(shù)值,在程序的運(yùn)行過(guò)

41、程中其值是不可改變的。運(yùn)行過(guò)程中其值是不可改變的。v通過(guò)關(guān)鍵字通過(guò)關(guān)鍵字const來(lái)聲明常量,其格式如下:來(lái)聲明常量,其格式如下:const 類(lèi)型標(biāo)識(shí)符類(lèi)型標(biāo)識(shí)符 常量名常量名 = 表達(dá)式表達(dá)式;v類(lèi)型標(biāo)識(shí)符指示所定義的常量的數(shù)據(jù)類(lèi)型,常量名類(lèi)型標(biāo)識(shí)符指示所定義的常量的數(shù)據(jù)類(lèi)型,常量名必須是合法的標(biāo)識(shí)符,在程序中通過(guò)常量名來(lái)訪問(wèn)必須是合法的標(biāo)識(shí)符,在程序中通過(guò)常量名來(lái)訪問(wèn)該常量。如下例所示:該常量。如下例所示:const double pi = 3.14159265;v上面的語(yǔ)句就定義了一個(gè)上面的語(yǔ)句就定義了一個(gè)double類(lèi)型的常量類(lèi)型的常量pi,它,它的值是的值是3.14159265。55

42、sophiev常量常量有如下特點(diǎn):有如下特點(diǎn): (1)程序中,常量只能被賦予初始值。一旦賦予一個(gè)常量)程序中,常量只能被賦予初始值。一旦賦予一個(gè)常量初始值,這個(gè)常量的值在程序的運(yùn)行過(guò)程中就不允許改變,初始值,這個(gè)常量的值在程序的運(yùn)行過(guò)程中就不允許改變,即無(wú)法對(duì)一個(gè)常量賦值。即無(wú)法對(duì)一個(gè)常量賦值。 (2)定義常量時(shí),表達(dá)式中的運(yùn)算符對(duì)象只允許出現(xiàn)常量,)定義常量時(shí),表達(dá)式中的運(yùn)算符對(duì)象只允許出現(xiàn)常量,不能有變量存在。不能有變量存在。v 例如:例如: int a = 20; const int b = 30; const int c = b + 25; /正確,因?yàn)檎_,因?yàn)閎是常量是常量 con

43、st int k = a + 45; /錯(cuò)誤,表達(dá)式中不允許出現(xiàn)變量錯(cuò)誤,表達(dá)式中不允許出現(xiàn)變量 c = 150; /錯(cuò)誤,不能修改常量的值錯(cuò)誤,不能修改常量的值56sophiev變量是程序運(yùn)行過(guò)程中用于存放數(shù)據(jù)的存儲(chǔ)單元。變是程序運(yùn)行過(guò)程中用于存放數(shù)據(jù)的存儲(chǔ)單元。變量的值在程序的運(yùn)行過(guò)程中是可以改變的。量的值在程序的運(yùn)行過(guò)程中是可以改變的。v1變量的定義v在定義變量時(shí),首先必須給每一個(gè)變量起名,稱(chēng)為變?cè)诙x變量時(shí),首先必須給每一個(gè)變量起名,稱(chēng)為變量名,以便區(qū)分不同的變量。變量名必須是合法的標(biāo)量名,以便區(qū)分不同的變量。變量名必須是合法的標(biāo)識(shí)符。為了保存不同類(lèi)型的數(shù)據(jù),除了變量名之外,識(shí)符。為了

44、保存不同類(lèi)型的數(shù)據(jù),除了變量名之外,在定義變量時(shí),還必須為每個(gè)變量指定數(shù)據(jù)類(lèi)型,變?cè)诙x變量時(shí),還必須為每個(gè)變量指定數(shù)據(jù)類(lèi)型,變量的類(lèi)型決定了存儲(chǔ)在變量中的數(shù)值的類(lèi)型。量的類(lèi)型決定了存儲(chǔ)在變量中的數(shù)值的類(lèi)型。v對(duì)于一個(gè)變量的定義,變量名和變量類(lèi)型缺一不可。對(duì)于一個(gè)變量的定義,變量名和變量類(lèi)型缺一不可。c#中,采用如下格式定義一個(gè)變量:中,采用如下格式定義一個(gè)變量:類(lèi)型標(biāo)識(shí)符類(lèi)型標(biāo)識(shí)符 變量名變量名1, 變量名變量名2, 變量名變量名3,.57sophiev變量定義如下例所示:變量定義如下例所示:int i, j, k;/同時(shí)聲明多個(gè)同時(shí)聲明多個(gè)int類(lèi)型相同的變量,在類(lèi)型相同的變量,在類(lèi)型的后

45、面用逗號(hào)分割變量名類(lèi)型的后面用逗號(hào)分割變量名float fsum;string strname, straddress;v注意:任何變量在使用前,必須先定義,后使用。任何變量在使用前,必須先定義,后使用。58sophiev2變量的賦值v變量是一個(gè)能保存某種類(lèi)型的具體數(shù)據(jù)的內(nèi)存單元,可以變量是一個(gè)能保存某種類(lèi)型的具體數(shù)據(jù)的內(nèi)存單元,可以通過(guò)變量名來(lái)訪問(wèn)這個(gè)具體的內(nèi)存單元。變量的賦值,就通過(guò)變量名來(lái)訪問(wèn)這個(gè)具體的內(nèi)存單元。變量的賦值,就是把數(shù)據(jù)保存到變量中的過(guò)程。給一個(gè)變量賦值的格式如是把數(shù)據(jù)保存到變量中的過(guò)程。給一個(gè)變量賦值的格式如下:下: 變量名變量名=表達(dá)式表達(dá)式;v這里的表達(dá)式同數(shù)學(xué)中的表

46、達(dá)式是類(lèi)似的,如這里的表達(dá)式同數(shù)學(xué)中的表達(dá)式是類(lèi)似的,如9+10、4+a-c都是表達(dá)式。單個(gè)常數(shù)或者變量,也可以構(gòu)成表達(dá)都是表達(dá)式。單個(gè)常數(shù)或者變量,也可以構(gòu)成表達(dá)式。由單個(gè)常數(shù)或者變量構(gòu)成的表達(dá)式的值,就是由這個(gè)式。由單個(gè)常數(shù)或者變量構(gòu)成的表達(dá)式的值,就是由這個(gè)常數(shù)或者變量本身。變量賦值的意義是:首先計(jì)算表達(dá)式常數(shù)或者變量本身。變量賦值的意義是:首先計(jì)算表達(dá)式的值,然后將這個(gè)值賦予變量。的值,然后將這個(gè)值賦予變量。59sophiev比如,定義了兩個(gè)比如,定義了兩個(gè)double類(lèi)型的變量類(lèi)型的變量dbltotalscore、dblaveragescore和一個(gè)和一個(gè)int類(lèi)型的變量類(lèi)型的變量n

47、studentcount: double dbltotalscore,dblaveragescore; int nstudentcount;60sophiev2變量的賦值v下面給下面給dbltotalscore、nstudentcount賦值,應(yīng)該賦值,應(yīng)該寫(xiě)成:寫(xiě)成: dbltotalscore = 2000; nstudentcount = 20;v如果要讓如果要讓dblaveragescore的值等于的值等于dbltotalscore的值除以的值除以nstudentcount,應(yīng)該寫(xiě)成:,應(yīng)該寫(xiě)成: dblaveragescore = dbltotalscore / nstudentco

48、unt;61sophiev在程序中,可以給一個(gè)變量多次賦值。變量的當(dāng)前在程序中,可以給一個(gè)變量多次賦值。變量的當(dāng)前值等于最近一次給變量所賦的值。如:值等于最近一次給變量所賦的值。如:nstudentcount = 20; /此時(shí)此時(shí)nstudentcount等等于于20nstudentcount = 70;/此時(shí)此時(shí)nstudentcount等于等于70nstudentcount = nstudentcount + 15; /此時(shí)此時(shí)nstudentcount等于等于8562sophiev在對(duì)變量進(jìn)行賦值時(shí),表達(dá)式的值的類(lèi)型必須同變量的在對(duì)變量進(jìn)行賦值時(shí),表達(dá)式的值的類(lèi)型必須同變量的類(lèi)型相同。

49、對(duì)于類(lèi)型相同。對(duì)于string類(lèi)型的變量類(lèi)型的變量strname和和int類(lèi)型的類(lèi)型的變量變量nscore: string strname; int nscore;v則下面的賦值語(yǔ)句是則下面的賦值語(yǔ)句是正確的:的: strname = jim; strname = xiaobao; nscore = 100;v但是,以下的賦值語(yǔ)句是但是,以下的賦值語(yǔ)句是錯(cuò)誤的:的: strname = 120; /不能把整數(shù)賦予字符串變量不能把整數(shù)賦予字符串變量 nscore = hello;/不能把字符串賦予整形變量不能把字符串賦予整形變量63sophiev3變量的初始化v在定義變量的同時(shí),也可以對(duì)變量賦值

50、,稱(chēng)為變量的在定義變量的同時(shí),也可以對(duì)變量賦值,稱(chēng)為變量的初始化。初始化。v在在c#中,對(duì)變量進(jìn)行初始化的格式如下所示:中,對(duì)變量進(jìn)行初始化的格式如下所示:類(lèi)型標(biāo)識(shí)符類(lèi)型標(biāo)識(shí)符 變量名變量名=表達(dá)式表達(dá)式;v例如:例如:int nstudentcount = 150;/定義一個(gè)定義一個(gè)int類(lèi)型變量類(lèi)型變量nstudentcount,并將其賦予初始值為,并將其賦予初始值為15064sophie 4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式v運(yùn)算符是表示各種不同運(yùn)算的符號(hào),運(yùn)算符和運(yùn)算是表示各種不同運(yùn)算的符號(hào),運(yùn)算符和運(yùn)算緊密相關(guān)。緊密相關(guān)。v表達(dá)式由變量、常數(shù)和運(yùn)算符組成,是用運(yùn)算符將表達(dá)式由變量、常數(shù)和

51、運(yùn)算符組成,是用運(yùn)算符將運(yùn)算對(duì)象連接起來(lái)的運(yùn)算式,是基本的對(duì)數(shù)據(jù)進(jìn)行運(yùn)算對(duì)象連接起來(lái)的運(yùn)算式,是基本的對(duì)數(shù)據(jù)進(jìn)行運(yùn)算和加工的表示形式。表達(dá)式的計(jì)算結(jié)果是表達(dá)運(yùn)算和加工的表示形式。表達(dá)式的計(jì)算結(jié)果是表達(dá)式的返回值。使用不同的運(yùn)算符連接運(yùn)算對(duì)象,其式的返回值。使用不同的運(yùn)算符連接運(yùn)算對(duì)象,其返回值的類(lèi)型是不同的。返回值的類(lèi)型是不同的。65sophie 4.1 運(yùn)算符v根據(jù)運(yùn)算符所要求的操作數(shù)的個(gè)數(shù),運(yùn)算符分為根據(jù)運(yùn)算符所要求的操作數(shù)的個(gè)數(shù),運(yùn)算符分為“一元運(yùn)算符”、“二元運(yùn)算符”和和“多元運(yùn)算符”。v一元運(yùn)算符是指只有一個(gè)操作數(shù)的運(yùn)算符,比如一元運(yùn)算符是指只有一個(gè)操作數(shù)的運(yùn)算符,比如“+”運(yùn)算符、

52、運(yùn)算符、“-”運(yùn)算符等。運(yùn)算符等。v二元運(yùn)算符是指有二個(gè)操作數(shù)的運(yùn)算符,比如二元運(yùn)算符是指有二個(gè)操作數(shù)的運(yùn)算符,比如“+”運(yùn)算符、運(yùn)算符、“*”運(yùn)算符等。運(yùn)算符等。v在在c#中,還有一個(gè)三元運(yùn)算符,即中,還有一個(gè)三元運(yùn)算符,即“?:”運(yùn)算符,運(yùn)算符,它有三個(gè)操作數(shù)。它有三個(gè)操作數(shù)。v根據(jù)運(yùn)算的類(lèi)型,運(yùn)算符又分為以下幾類(lèi):根據(jù)運(yùn)算的類(lèi)型,運(yùn)算符又分為以下幾類(lèi):算術(shù)運(yùn)算符、賦值運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符和和其他運(yùn)算符。66sophiev1.算術(shù)運(yùn)算符算術(shù)運(yùn)算符v算術(shù)運(yùn)算符用于對(duì)操作數(shù)進(jìn)行算術(shù)運(yùn)算,算術(shù)運(yùn)算符用于對(duì)操作數(shù)進(jìn)行算術(shù)運(yùn)算,c#中的算中的算術(shù)運(yùn)算符及其功能如表術(shù)運(yùn)算符及其功

53、能如表3-5所示。所示。67sophiev(1)除法運(yùn)算符和模運(yùn)算符)除法運(yùn)算符和模運(yùn)算符v需要說(shuō)明的是,盡管需要說(shuō)明的是,盡管+、-、*和和/這些運(yùn)算符的意義和這些運(yùn)算符的意義和數(shù)學(xué)上的運(yùn)算符是一樣的。數(shù)學(xué)上的運(yùn)算符是一樣的。v但是,對(duì)于除法運(yùn)算符來(lái)說(shuō),整數(shù)相除的結(jié)果也應(yīng)該但是,對(duì)于除法運(yùn)算符來(lái)說(shuō),整數(shù)相除的結(jié)果也應(yīng)該為整數(shù),比如為整數(shù),比如7/5和和9/5的結(jié)果都為的結(jié)果都為1,而不是,而不是1.4及及1.8,計(jì)算結(jié)果要舍棄小數(shù)部分。計(jì)算結(jié)果要舍棄小數(shù)部分。v可以通過(guò)模運(yùn)算符可以通過(guò)模運(yùn)算符%來(lái)獲得這個(gè)除法的余數(shù)。運(yùn)算符來(lái)獲得這個(gè)除法的余數(shù)。運(yùn)算符%可以應(yīng)用于整數(shù)和浮點(diǎn)類(lèi)型,例如,可以應(yīng)用

54、于整數(shù)和浮點(diǎn)類(lèi)型,例如,10%3的結(jié)果的結(jié)果為為1,10.0%3.0的結(jié)果為的結(jié)果為1。68sophiev【例3-5】/和%運(yùn)算符的示例。v 程序代碼如下:using system; class divandmoddemo static void main() int nresult, nremainder; double dblresult, dblremainder; nresult = 10 / 3; nremainder = 10 % 3; dblresult = 10.0 / 3.0; dblremainder = 10.0 % 3.0; console.writeline(10/3

55、=0,10%3=1n, nresult, nremainder); console.writeline(10.0/3.0=0,10.0%3.0=1, dblresult, dblremainder); 69sophiev【例例3-5】/和和%運(yùn)算符的示例。運(yùn)算符的示例。v程序的執(zhí)行結(jié)果如圖程序的執(zhí)行結(jié)果如圖3-3所示:所示:70sophiev(2)自增運(yùn)算符和自減運(yùn)算符)自增運(yùn)算符和自減運(yùn)算符v在在c#中,還有兩種特殊的算術(shù)運(yùn)算符:中,還有兩種特殊的算術(shù)運(yùn)算符:+(自增運(yùn)(自增運(yùn)算符)和算符)和-(自減運(yùn)算符),其作用是使變量的值自(自減運(yùn)算符),其作用是使變量的值自動(dòng)增加動(dòng)增加1或者減去或者

56、減去1。vx=x+1和和x+的作用是一樣的,的作用是一樣的,x=x-1和和x-的作用也的作用也是一樣的。是一樣的。+(自增運(yùn)算符)和(自增運(yùn)算符)和-(自減運(yùn)算符)都(自減運(yùn)算符)都是一元運(yùn)算符,只能用于變量,而不能用于常量或是一元運(yùn)算符,只能用于變量,而不能用于常量或表達(dá)式,例如,表達(dá)式,例如,12+或或-(x+y)都是錯(cuò)誤的。都是錯(cuò)誤的。v自增和自減運(yùn)算符可以在操作數(shù)前面(前綴),也自增和自減運(yùn)算符可以在操作數(shù)前面(前綴),也可以在操作數(shù)后面(后綴)。例如:可以在操作數(shù)后面(后綴)。例如:+x; /前綴格式前綴格式x+; /后綴格式后綴格式71sophie 3.4.1 運(yùn)算符v 當(dāng)自增或自

57、減運(yùn)算符的前綴和后綴格式用在一個(gè)表達(dá)式中時(shí),當(dāng)自增或自減運(yùn)算符的前綴和后綴格式用在一個(gè)表達(dá)式中時(shí),存在著區(qū)別。存在著區(qū)別。v 當(dāng)一個(gè)自增或自減運(yùn)算符在它的操作數(shù)前面(前綴格式)時(shí),當(dāng)一個(gè)自增或自減運(yùn)算符在它的操作數(shù)前面(前綴格式)時(shí),將在取得操作數(shù)的值前執(zhí)行自增或自減操作,并將其用于表將在取得操作數(shù)的值前執(zhí)行自增或自減操作,并將其用于表達(dá)式的其它部分。如果運(yùn)算符在操作數(shù)年的后面(后綴格達(dá)式的其它部分。如果運(yùn)算符在操作數(shù)年的后面(后綴格式),將先取得操作數(shù)的值,然后進(jìn)行自增或自減運(yùn)算。式),將先取得操作數(shù)的值,然后進(jìn)行自增或自減運(yùn)算。v 比如下面的例子:比如下面的例子: x=11; y=+x;v

58、 在這種情況下,在這種情況下,y被賦值為被賦值為12。但是,如果代碼如果改為:。但是,如果代碼如果改為: x=11; y=x+;v 那么,那么,y被賦值為被賦值為11。在兩種情況下,最終。在兩種情況下,最終x都被賦值為都被賦值為12。72sophiev【例3-6】自增運(yùn)算符的示例。using system; class test static void main() int x = 5; int y = x+; console.writeline(y=0, y); y = +x; console.writeline(y=0, y); 73sophiev【例3-6】自增運(yùn)算符的示例。自增運(yùn)算符的

59、示例。v該程序的運(yùn)行結(jié)果如圖該程序的運(yùn)行結(jié)果如圖3-4所示。所示。說(shuō)明:說(shuō)明:第一次對(duì)于x是先使用后自增,所以輸出的結(jié)果為5,第二次對(duì)于x是先自增后使用,所以輸出的結(jié)果為7。74sophiev2.賦值運(yùn)算符賦值運(yùn)算符v 賦值運(yùn)算符用于將一個(gè)數(shù)據(jù)賦予一個(gè)變量,賦值操作符的左賦值運(yùn)算符用于將一個(gè)數(shù)據(jù)賦予一個(gè)變量,賦值操作符的左操作數(shù)必須是一個(gè)變量,賦值結(jié)果是將一個(gè)新的數(shù)值存放在操作數(shù)必須是一個(gè)變量,賦值結(jié)果是將一個(gè)新的數(shù)值存放在變量所指示的內(nèi)存空間中。常用的賦值運(yùn)算符如表變量所指示的內(nèi)存空間中。常用的賦值運(yùn)算符如表3-6所示。所示。75sophiev 其中,其中,“=”是簡(jiǎn)單的賦值運(yùn)算符,它的作用

60、是將右邊的數(shù)值賦是簡(jiǎn)單的賦值運(yùn)算符,它的作用是將右邊的數(shù)值賦值給左邊的變量,數(shù)值可以是常量,也可以是表達(dá)式。值給左邊的變量,數(shù)值可以是常量,也可以是表達(dá)式。v 例如,例如,x=18或者或者x=10-x都是允許的,它們分別執(zhí)行了一次賦值都是允許的,它們分別執(zhí)行了一次賦值操作。操作。v 除了簡(jiǎn)單的賦值運(yùn)算符之外,其他的賦值運(yùn)算符都是復(fù)合的賦除了簡(jiǎn)單的賦值運(yùn)算符之外,其他的賦值運(yùn)算符都是復(fù)合的賦值運(yùn)算符,是在值運(yùn)算符,是在“=”之前加上其他運(yùn)算符。之前加上其他運(yùn)算符。v復(fù)合賦值運(yùn)算符的運(yùn)算很簡(jiǎn)單,例如的運(yùn)算很簡(jiǎn)單,例如x*=10等價(jià)于等價(jià)于x=x*10,它,它是對(duì)變量進(jìn)行一次自乘操作。復(fù)合賦值運(yùn)算符

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論