第3章C語法基礎(chǔ)_第1頁
第3章C語法基礎(chǔ)_第2頁
第3章C語法基礎(chǔ)_第3頁
第3章C語法基礎(chǔ)_第4頁
第3章C語法基礎(chǔ)_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第3章 c#語法基礎(chǔ)3.1 數(shù)據(jù)類型數(shù)據(jù)類型(1)值類型值類型: 整數(shù)、字符、實(shí)數(shù)、布爾數(shù)、結(jié)構(gòu)、枚舉(2)引用類型引用類型: class(類)、interface(接口)、數(shù)組、delegate(委托)、object和string。object是c#中所有類型的根類。string直接繼承object類的密封類型值類型值類型就是一個(gè)包含實(shí)際數(shù)據(jù)的量。c#以堆棧方式分配存儲(chǔ)區(qū)域給該變量,對(duì)其讀/寫直接在這塊區(qū)域進(jìn)行。例如:例如: int inum=10; / 分配一個(gè)32位內(nèi)存區(qū)域給變量inum, / 并將10放入該內(nèi)存區(qū)域 inum=inum+10; / 從變量inum中取出值,加上10, /

2、再將計(jì)算結(jié)果賦給inum 引用類型引用類型不存儲(chǔ)實(shí)際數(shù)據(jù),而是存儲(chǔ)其引用 首先在堆棧上創(chuàng)建一個(gè)引用變量, 然后在堆上創(chuàng)建對(duì)象本身, 再把這個(gè)內(nèi)存的首地址賦給引用變量。例如:例如: string s1, s2; s1=abcd; s2 = s1; s1、s2是指向字符串的引用變量,s1的值是字符串a(chǎn)bcd存放在內(nèi)存的地址 語句s2 = s1使得s2、s1都引用abcd例例:引用類型引用類型思考:輸出思考:輸出s2和和s1,有何結(jié)果?,有何結(jié)果?3.1.1 簡(jiǎn)單值類型簡(jiǎn)單值類型1. 整數(shù)類型整數(shù)類型有符號(hào)整數(shù)有符號(hào)整數(shù)包括sbyte(符號(hào)字節(jié)型)、short(短整型)、int(整型)、long(長(zhǎng)

3、整型)。無符號(hào)整數(shù)無符號(hào)整數(shù)默認(rèn)為正數(shù),包括byte(字節(jié)型)、ushort(無符號(hào)短整型)、uint(無符號(hào)整型)、ulong(無符號(hào)長(zhǎng)整型)。 2. char(字符型)(字符型)范圍是065535之間的unicode字符,占2個(gè)字節(jié) char a1=s; char a2=; / 表示單斜杠string s1= “perpson” / string是字符類,用雙引號(hào)char a3=; / 表示單引號(hào)轉(zhuǎn)轉(zhuǎn) 義義 字字 符符含含 義義unicode碼碼轉(zhuǎn)轉(zhuǎn) 義義 字字 符符含含 義義unicode碼碼單引號(hào)單引號(hào)u0027 b退格符退格符u0008雙引號(hào)雙引號(hào)u0022 f走紙換走紙換頁符頁符u

4、000c反斜線反斜線字符字符u005c n換行符換行符u000a0空字符空字符u0000 r回車符回車符u000da警鈴符警鈴符u0007 t水平制水平制表符表符u0009v垂直制垂直制表符表符u000b轉(zhuǎn)義符轉(zhuǎn)義符3. 實(shí)數(shù)類型實(shí)數(shù)類型包括float(單精度浮點(diǎn)型)、double(雙精度浮點(diǎn)型)、decimal(十進(jìn)制型)。double x = 1.2; / 亦可加上 d 或 dfloat y= -0.5f / 需加上 f 或 fdecimal z = 3.2m / 需加上 m 或 m4 布爾類型布爾類型bool(布爾型):表示布爾邏輯量。數(shù)據(jù)范圍是“true”和“false”。占一個(gè)字節(jié)。

5、bool b1= true;bool b2=false;c#關(guān)鍵字關(guān)鍵字.net cts類型類型名名說說 明明范圍和精度范圍和精度boolsystem.boolean布爾型布爾型true, falsesbytesystem.sbyte8位有符號(hào)整數(shù)類位有符號(hào)整數(shù)類型型 128127bytesystem.byte8位無符號(hào)整數(shù)類位無符號(hào)整數(shù)類型型0255shortsystem.int1616位有符號(hào)整數(shù)位有符號(hào)整數(shù)類型類型 3276832767ushortsystem.uint1616位無符號(hào)整數(shù)位無符號(hào)整數(shù)類型類型065535intsystem.int3232位有符號(hào)整數(shù)位有符號(hào)整數(shù)類型類型

6、21474836482147483647c#中的數(shù)據(jù)類型uintsystem.uint3232位無符號(hào)整數(shù)位無符號(hào)整數(shù)類型類型04294967295longsystem.int6464位有符號(hào)整數(shù)位有符號(hào)整數(shù)類型類型 92233720368547758089223372036854775807ulongsystem.uint6464位無符號(hào)整數(shù)位無符號(hào)整數(shù)類型類型018446744073709551615charsystem.char16位字符類型位字符類型所有的所有的unicode編碼編碼字符字符floatsystem.single32位單精度浮點(diǎn)類位單精度浮點(diǎn)類型型(大約(大約7個(gè)有效十進(jìn)

7、個(gè)有效十進(jìn)制數(shù)位)制數(shù)位)doublesystem.double64位雙精度浮點(diǎn)類位雙精度浮點(diǎn)類型型(大約(大約1516個(gè)有效個(gè)有效十進(jìn)制數(shù)位)十進(jìn)制數(shù)位)decimalsystem.decimal128位高精度十進(jìn)位高精度十進(jìn)制數(shù)類型制數(shù)類型(大約(大約2829個(gè)有效個(gè)有效十進(jìn)制數(shù)位)十進(jìn)制數(shù)位)3.1.2 復(fù)合值類型復(fù)合值類型1 結(jié)構(gòu)結(jié)構(gòu)包含數(shù)據(jù)、構(gòu)造函數(shù)、方法、屬性、事件等成員struct mystruct / 定義字段x,ypublic int x;public int y; public mystruct(int i, int j) / 定義構(gòu)造函數(shù) x = i;y = j;例:值類

8、型的結(jié)構(gòu)例:值類型的結(jié)構(gòu)2 枚舉枚舉對(duì)變量的取值范圍作特殊限制enum weekday mon, tues, wedn, thur, fri, sat, sunweekday day1 = weekday.mon;思考:枚舉值可以相減,卻不能相加,何故?思考:枚舉值可以相減,卻不能相加,何故?3.1.3 類類將結(jié)構(gòu)的struct 改為class便得到類,但類是引用類型例:定義類并創(chuàng)建實(shí)例例:定義類并創(chuàng)建實(shí)例結(jié)構(gòu)與類的區(qū)別結(jié)構(gòu)與類的區(qū)別結(jié)結(jié) 構(gòu)構(gòu)類類值類型值類型引用類型引用類型可以不用可以不用new 實(shí)例化實(shí)例化必須必須沒有默認(rèn)的構(gòu)造函數(shù),沒有默認(rèn)的構(gòu)造函數(shù),但可以添加構(gòu)造函數(shù)有有沒有析構(gòu)函數(shù)沒

9、有析構(gòu)函數(shù)有有沒有 abstract、protected和 sealed修飾符可以有可以有結(jié)構(gòu)用于點(diǎn)、矩形和顏色等輕量對(duì)象值類型在堆棧上分配,引用類型在堆上分配。前者快于后者堆用完以后由.net的垃圾收集器自動(dòng)回收,拖累性能3.1.4 數(shù)組數(shù)組數(shù)組有三種:一維數(shù)組、多維數(shù)組和不規(guī)則數(shù)組數(shù)組也是引用類型1一維數(shù)組一維數(shù)組一維數(shù)組的聲明:可在實(shí)例化的同時(shí)初始化int xs = new int 3 10, 20, 30 ;int xs = 10, 20, 30 ; 使用new操作符創(chuàng)建數(shù)組實(shí)例:num = new int3;type arrayname ; / type是數(shù)據(jù)類型。例: int nu

10、m;2多維數(shù)組多維數(shù)組多維數(shù)組的聲明type , , , arrayname ; n個(gè)逗號(hào)表示n+1維數(shù)組。也可在實(shí)例化時(shí)初始化int , x = new int2,3 1,2,3, 3,5,8 ;int , y = new int, 10,50, 25,75, 50,150;int , z = 1,2,3,5,8,13 , 1,2,3,5,8,13 ;或者int , nums = new 3, 2;例如: int , nums; / 二維數(shù)組nums = new int 3,23不規(guī)則數(shù)組不規(guī)則數(shù)組不規(guī)則數(shù)組是數(shù)組的數(shù)組,每個(gè)數(shù)組的長(zhǎng)度可以不同不規(guī)則數(shù)組的聲明type arrayname ;

11、例如: int jagged ; / 二維不規(guī)則數(shù)組創(chuàng)建數(shù)組實(shí)例不規(guī)則數(shù)組初始化不規(guī)則數(shù)組初始化每一個(gè)數(shù)組需要單獨(dú)使用new運(yùn)算符生成。例如: char st1 = new char 3 ; / st1由三個(gè)數(shù)組組成st10 = new char s, e, p, t, e, m, b, e, r st11 = new char o, c, t, o, b, e, rst12 = new char n, o, v, e, m, b, e, r ;數(shù)組元素的訪問數(shù)組元素的訪問1一維數(shù)組的引用數(shù)組名下標(biāo)2多維數(shù)組的引用數(shù)組名下標(biāo)1, 下標(biāo)2, ,下標(biāo)n3不規(guī)則數(shù)組的引用數(shù)組名下標(biāo)1下標(biāo)2下標(biāo)n【例

12、】【例】 打印楊輝三角形打印楊輝三角形 3.1.5 類型轉(zhuǎn)換類型轉(zhuǎn)換分隱式隱式與顯式顯式1. 隱式轉(zhuǎn)換數(shù)值范圍小的類型向大的無符號(hào)整數(shù)轉(zhuǎn)為有符號(hào)的int b=7;char a=b; / 出錯(cuò)出錯(cuò)char letter=aint num = 32+letter; / 合法合法int x=123456;long y=x; / 合法合法 2. 顯式轉(zhuǎn)換顯式轉(zhuǎn)換也稱強(qiáng)制轉(zhuǎn)換,用括弧明確指示轉(zhuǎn)換類型。格式: (數(shù)據(jù)類型名稱數(shù)據(jù)類型名稱)數(shù)據(jù)數(shù)據(jù)顯式轉(zhuǎn)換可能損失數(shù)據(jù):decimal d=234.55m; int x=(int)d;例如:int x=600; short z=(short)x;派生類可隱式轉(zhuǎn)

13、換為基類,反之需顯式class student class graduate : student graduate g1 = new graduate();student s1 = g1;graduate g2 = (graduate)s1; 3. 使用方法進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換使用方法進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換(2) tostring方法將其他數(shù)據(jù)類型轉(zhuǎn)換為字符串。格式為: 變量名稱變量名稱.tostring( )例如:int x=123; string s=x.tostring( ); (1) parse方法將特定格式的字符串轉(zhuǎn)換為數(shù)值。格式為: 數(shù)值類型名稱數(shù)值類型名稱.parse(字符串型表達(dá)式字

14、符串型表達(dá)式)例如:int x=int.parse(123); 演示:文本框字轉(zhuǎn)數(shù)、數(shù)轉(zhuǎn)字(3) 使用convert轉(zhuǎn)換 system.convert類中有一套靜態(tài)方法實(shí)現(xiàn)類型的轉(zhuǎn)換方方 法法實(shí)現(xiàn)的轉(zhuǎn)實(shí)現(xiàn)的轉(zhuǎn)換類型換類型方方 法法實(shí)現(xiàn)的轉(zhuǎn)換類型實(shí)現(xiàn)的轉(zhuǎn)換類型convert.toboolean()boolconvert.toint32()intconvert.tobyte()byteconvert.toint64()longconvert.tochar()charconvert.tosbyte()sbyteconvert.tostring()stringconvert.tosingle()flo

15、atconvert.todecimal()decimalconvert.touint16()ushortconvert.todouble()doubleconvert.touint32()uintconvert.toint16()shortconvert.touint64()ulong例如:例如:string str = 32767;system.convert.toint16(str);可以進(jìn)行正常的類型轉(zhuǎn)換??梢赃M(jìn)行正常的類型轉(zhuǎn)換?;蚧騭tring str = ;system.convert.toint16(str); /無意義無意義 產(chǎn)生異常產(chǎn)生異常無意義的轉(zhuǎn)換將引發(fā)異常,將不執(zhí)行任何轉(zhuǎn)

16、換string str = 32768;system.convert.toint16(str); /超過范圍超過范圍4.裝箱與拆箱裝箱與拆箱 “裝箱裝箱”將其他類型包裝成object引用類型 “拆箱拆箱”操作與“裝箱”相反,它是將一個(gè)object類型轉(zhuǎn)換成其他類型。值類型轉(zhuǎn)換為引用類型無需顯式轉(zhuǎn)換;反之需要例:裝箱和拆箱例:裝箱和拆箱int x=3;object y=x; /裝箱 int z=(int)y; /拆箱演示:菜單項(xiàng)之拆箱操作3.2 操作符和表達(dá)式操作符和表達(dá)式3.2.1 算術(shù)操作符算術(shù)操作符-(取負(fù))、+(取正)、+(加)、-(減)、*(乘)、/(除)、%(求余)。int x1 =

17、 10 / 3 ; / x1 = 3int x2 = 10 % 3 ; / x2 = 1double y1 = 5.4 / 1.5 ; / y1 = 3.6double y2 = 5.4 %1.5 ; / y1 = 自增和自減操作符自增和自減操作符int x= 100;console.writeline(x+); / 先輸出100,后計(jì)算x=x+1console.writeline(+x); / 先計(jì)算x=x+1,后輸出102int y = 50;console.writeline(-y); /先計(jì)算y=y-1 ,后輸出49console.writeline(y+); /先輸

18、出49,后計(jì)算y=y-13.2.3 位操作符位操作符取反 左移 與 &或 |異或 3.2.4 賦值操作符賦值操作符簡(jiǎn)單賦值簡(jiǎn)單賦值=復(fù)合賦值復(fù)合賦值+= -= *= /= %= = &= |= =賦值操作符從右向左計(jì)算例:byte x = 20;x = 2;byte y = x += 5;y += x += 2;3.2.5 關(guān)系操作符關(guān)系操作符比較操作符比較操作符= != = 判斷操作符判斷操作符is例:int x = 15;int y = 15 /2 * 2;bool b1 = (x = y);bool b2 = (x = y);int x = 5;console.writeline( o

19、is int );3.2.6 邏輯操作符邏輯操作符邏輯與邏輯與&邏輯或邏輯或|邏輯非邏輯非!例:int x = 15;int y = 15 /2 * 2;bool b1 = (x y) & (y 10);bool b2 = (x y) | (y y) ? x : y;3.2.8 操作符的優(yōu)先級(jí)與結(jié)合性操作符的優(yōu)先級(jí)與結(jié)合性 1. 優(yōu)先級(jí)優(yōu)先級(jí) 一元運(yùn)算符 二元和三元運(yùn)算符。 算術(shù) 關(guān)系 邏輯 條件 賦值 。 乘、除、求余 加、減; 小于、大于、小于等于、大于等于 相等與不等 非 與 或。 2. 結(jié)合性結(jié)合性賦值操作符與條件運(yùn)算符是由右向左結(jié)合的,賦值操作符以外的二元運(yùn)算符是由左向右結(jié)合的。例x

20、+y+z是按(x+y)+z的順序運(yùn)算而x=y=z是按x=(y=z)的順序運(yùn)算操作符的優(yōu)先級(jí)與結(jié)合性操作符的優(yōu)先級(jí)與結(jié)合性類類 別別運(yùn)運(yùn) 算算 符符結(jié)結(jié) 合合 性性初等項(xiàng)初等項(xiàng). ( ) new typeof checked unchecked 從左到右從左到右一元后綴一元后綴+ 從右到左從右到左一元前綴一元前綴+ + ! 從右到左從右到左乘法乘法* / % 從左到右從左到右加法加法+ 從左到右從左到右移位移位從左到右從左到右關(guān)系和類型關(guān)系和類型檢測(cè)檢測(cè) = is as 從左到右從左到右相等相等= !=從左到右從左到右與與&從左到右從左到右異或異或從左到右從左到右或或|從左到右從左到右邏輯與邏輯

21、與&從左到右從左到右邏輯或邏輯或|從左到右從左到右條件條件? :從右到左從右到左賦值賦值= *= /= %= += = = &= = |=從右到左從右到左例例: 已知已知int a = 3, b = 5, c = -1, d = 7;求:求:(c + d) / (a - b) % 2 0) | d 0計(jì)算步驟計(jì)算步驟:1, (c + d) / (a - b) % 2 0) | d 02, 6 / (-2) % 2 0 & true | d 03, -3 % 2 0 & true | d 04, -1 0 & true | 7= 60) console.write(及格及格);console.w

22、rite(及格及格);x=60結(jié)束結(jié)束開始開始if(x = 60) console.write(及格及格);else console.write(不及格不及格);console.write(及格及格);x=60結(jié)束結(jié)束開始開始console.write(不及格不及格);char grade;if(x = 80) grade = 優(yōu)優(yōu);else if (x=60) grade = 良良else grade = 差差;grade = 優(yōu)優(yōu)x=80結(jié)束結(jié)束開始開始grade = 良良grade = 差差x=60int i = x / 20; char grade;switch(i) case 4: grade = 優(yōu)優(yōu); break; case 3: grade = 良良; break; default:

溫馨提示

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

評(píng)論

0/150

提交評(píng)論