10-2015年6月28日-基礎(chǔ)班第天靜態(tài)與非、命名空間值類型與引用字符串不可變性操作_第1頁
10-2015年6月28日-基礎(chǔ)班第天靜態(tài)與非、命名空間值類型與引用字符串不可變性操作_第2頁
10-2015年6月28日-基礎(chǔ)班第天靜態(tài)與非、命名空間值類型與引用字符串不可變性操作_第3頁
10-2015年6月28日-基礎(chǔ)班第天靜態(tài)與非、命名空間值類型與引用字符串不可變性操作_第4頁
10-2015年6月28日-基礎(chǔ)班第天靜態(tài)與非、命名空間值類型與引用字符串不可變性操作_第5頁
免費預(yù)覽已結(jié)束,剩余18頁可下載查看

下載本文檔

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

文檔簡介

1、static 靜態(tài)關(guān)鍵字例子: 全校1000名學(xué)生 都有一個屬性 學(xué)校名稱, 需要開辟1000個空間來存放學(xué)校名稱嗎?Static靜態(tài)成員適用的場景1、你的資源需要全局共享。2、如果你寫的類需要被當(dāng)做工具類來使用。典型的工具類 Consolestatic 靜態(tài)關(guān)鍵字靜態(tài)和非靜態(tài)的區(qū)別 如果當(dāng)前成員是靜態(tài)成員,那么需要加上static關(guān)鍵字進(jìn)行修飾。 如果當(dāng)前成員不是靜態(tài)成員,那么不需要static關(guān)鍵。 調(diào)用的區(qū)別:-靜態(tài)成員在調(diào)用的時候需要使用類名來調(diào)用。-但是非靜態(tài)成員在調(diào)用的時候要求使用對象名來調(diào)用。 非靜態(tài)類:-在非靜態(tài)類中即允許出現(xiàn)靜態(tài)成員,也允許出現(xiàn)非靜態(tài)成員。-在非靜態(tài)函數(shù)中即允

2、許訪問非靜態(tài)成員,也允許訪問靜態(tài)成員。-靜態(tài)函數(shù)中只允許訪問靜態(tài)成員。 靜態(tài)類:靜態(tài)類中只允許出現(xiàn)靜態(tài)成員。命名空間namespace(命名空間),用于解決類重名問題,可以看做“類的文件夾”。如果代碼和被使用的類在一個namespace則不需要using。在不同命名空間下的類調(diào)用有兩種方法: 寫全稱 命名空間.類名先using引用命名空間,再調(diào)用AtL+shift+f10 (右鍵)堆和棧的區(qū)別(*)棧是編譯期間就分配好的內(nèi)存空間,因此你的代碼中必須就棧的大小有明確的定義;局部值類型變量、值類型參數(shù)等都在棧內(nèi)存中。堆是程序運行期間動態(tài)分配的內(nèi)存空間,你可以根據(jù)程序的運行情況確定要分配的堆內(nèi)存的大

3、小。值類型和引用類型的區(qū)別1.將一個值類型變量賦給另一個值類型變量時,將復(fù)制包含的值。引用類型變量的賦值只復(fù)制對對象的引用,而不復(fù)制對象本身。2.值類型不可能派生出新的類型:所有的值類型均隱式派生自 System.ValueType。但與引用類型相同的是,結(jié)構(gòu)也可以實現(xiàn)接口。3.值類型不可能包含 null 值:4.每種值類型均有一個隱式的默認(rèn)構(gòu)造函數(shù)來初始化該類型的默認(rèn)值。.net中哪些是值類型?哪些是引用類型?數(shù)組:int,string數(shù)組接口:interface接口自定義類:class字符串:string基類:System.Object類引用類型結(jié)構(gòu):struct結(jié)構(gòu)類型枚舉:enum枚舉

4、類型布爾型:bool字符型:char浮點型:float長整型:long整型:int基本數(shù)據(jù)類型值類型描述類別類別字符串的處理(S)string可以看做是char的只讀數(shù)組。char c = s1;。例子:遍歷輸出string中的每個元素。C#中字符串有一個重要的特性:不可變性,字符串一旦聲明就不再可以改變。所以只能通過索引來讀取指定位置的char,不能對指定位置的char進(jìn)行修改。如果要對char進(jìn)行修改,那么就必須創(chuàng)建一個新的字符串,用s. ToCharArray()方法得到字符串的char數(shù)組,對數(shù)組進(jìn)行修改后,調(diào)用new string(char)這個構(gòu)造函數(shù)(暫時不用細(xì)研究)來創(chuàng)建cha

5、r數(shù)組的字符串。一旦字符串被創(chuàng)建,那么char數(shù)組的修改也不會造成字符串的變化。例子:將字符串中的A替換為a。常見疑問誰說字符串不可變?string s = abc;s=123,s這不是變了嗎要區(qū)分變量名和變量指向的值的區(qū)別。程序中可以有很多字符串,然后由字符串變量指向他們,變量可以指向其他的字符串,但是字符串本身沒有變化。字符串不可變性指的是內(nèi)存中的字符串不可變,而不是變量不變。string s10 = s1;/s10指向s1指向的字符串,而不是s10指向s1,哪怕s1以后指向了其他內(nèi)存,那么s10還是指向hello字符串俢改的問題:例:拼接100000個字符串,觀察耗時StringBuil

6、der操作: Stopwatch sw1 = new Stopwatch(); StringBuilder sb = new StringBuilder(); sw1.Start(); for (int i = 0; i 100000; i+) sb.Append(i); / sw1.Stop(); Console.WriteLine(sw1.Elapsed);String 在進(jìn)行運算時(如賦值、拼接等)會產(chǎn)生一個新的實例,而 StringBuilder則不會。所以在大量字符串拼接或頻繁對某一字符串進(jìn)行操作時最好使用 StringBuilder,不要使用 String字符串練習(xí)一:隨機(jī)輸入你心

7、中想到的一個名字,然后輸出它的字符串長度 Length:可以得字符串的長度練習(xí)二:兩個學(xué)員輸入各自最喜歡的課程名稱,判斷是否一致,如果相等,則輸出你們倆喜歡相同的課程.如果不相同,則輸出你們倆喜歡不相同的課程.上題中兩位同學(xué)輸入 c#和 C#代表同一門課,怎么辦?字符串的連接+,兩邊只要有一個是字符串類型,另一個也會被自動轉(zhuǎn)換成字符串類型一切類型都可以調(diào)用.ToString()方法轉(zhuǎn)換成字符串類型.String類常用方法(S)ToLower():得到字符串的小寫形式。注意字符串是不可變的,所以這些函數(shù)都不會直接改變字符串的內(nèi)容,而是把修改后的字符串的值通過函數(shù)返回值的形式返回。s.ToLowe

8、r()與s=s.ToLower()ToUpper():得到字符串的大寫形式; Trim()去掉字符串兩端的空白。s1.Equals(s2, parison.OrdinalIgnoreCase),兩個字符串進(jìn)行比較不區(qū)分大小寫的比較。s1=s2字符串的分割(S)string Split(params char separator):將字符串按照指定的分割符分割為字符串?dāng)?shù)組;string Split(char separator, StringSplitOptions options)將字符串按照指定的char分割符分割為字符串?dāng)?shù)組( options 取RemoveEmptyEntries的時候移

9、除結(jié)果中的空白字符串);練習(xí):從日期字符串(2008-08-08)中分析出年、月、日;2008年08月08日。讓用戶輸入一個日期格式如:2008-01-02,你輸出你輸入的日期為2008年1月2日字符串函數(shù)詳解字符串替換:string Replace(string oldValue, string newValue)將字符串中的出現(xiàn)oldValue的地方替換為newValue。例子:名字替換。取子字符串:string Substring(int startIndex),取從位置startIndex開始一直到最后的子字符串;string Substring(int startIndex, int

10、 length),取從位置startIndex開始長度為length的子字符串,如果子字符串的長度不足length則報錯。bool Contains(string value)判斷字符串中是否含有子串valuebool StartsWith(string value)判斷字符串是否以子串value開始;bool EndsWith (string value)判斷字符串是否以子串value結(jié)束;int IndexOf(string value):取子串value第一次出現(xiàn)的位置。Int IndexOf(string value,int startIndex)字符串的處理練習(xí)課上練習(xí)1:接收用戶輸

11、入的字符串,將其中的字符以與輸入相反的順序輸出。abccba課上練習(xí)2:接收用戶輸入的一句英文,將其中的單詞以反序輸出。hello c sharpsharp c hello課上練習(xí)3:從Email中提取出用戶名和域名: 。課上練習(xí)4:文本文件中存儲了多個文章標(biāo)題、作者,標(biāo)題和作者之間用若干空格(數(shù)量不定)隔開,每行一個,標(biāo)題有的長有的短,輸出到控制臺的時候最多標(biāo)題長度10,如果超過10,則截取長度8的子串并且最后添加“.”,加一個豎線后輸出作者的名字。讓用戶輸入一句話,找出所有e的位置讓用戶輸入一句話,判斷這句話中有沒有邪惡,如果有邪惡就替換成這種形式然后輸出,如:老牛很邪惡,輸出后變成老牛很

12、*;把“諸葛亮”,”鳥叔”,”卡卡西”,”卡哇伊”變成諸葛亮|鳥叔|卡卡西|卡哇伊,然后再把|切割掉總結(jié)字符串常用的方法;為什么要繼承分別寫一個Teacher類和一個Student的類,分析他們應(yīng)該有哪些屬性和方法.假如系統(tǒng)還要再加入班主任類、校長類(Principal)、家長(patriarch)類.試分析這幾個類的屬性?代碼冗余,怎么解決?冗余的解決方案繼承的符號 :利用繼承實現(xiàn)Student類和Teacher類繼承自Person類.Student類和Teacher類繼承父類的屬性和方法.Student類和Teacher類還有自己獨有的屬性和方法.繼承的使用(S)class Student

13、:Person.;class Teacher:Person.;子類繼承了父類的成員,子類還可以有自己的成員.Person叫做父類(基類) Student和Teacher叫子類(派生類)Student繼承了Person類Person類派生了Teacher類在c#中,所有的類都直接或間接的繼承自了object類.(當(dāng)我們定義一個類的時候,如果沒有寫:繼承一個類,那么這個類就繼承了object類)練習(xí):定義一個Dog類和一個Cat 類,定義出一個父類它們都有Age,Weight的屬性,都有叫的方法Call:”我是動物”,另外Dog有Watch(看門)的方法,Cat有抓CatchMouse(抓老鼠)的

14、方法寫一個Reporter(記者)類,Programmer(程序員)類, Driver(司機(jī))類他們都有一個打招呼的方法,不同的是 Reporter 打招呼是說“大家好,我叫XX,我的愛好是XXX”, Programmer和Driver 的打招呼的方法是說大家好,我叫XX,我今年XX歲了,我已經(jīng)工作XX年了?new關(guān)鍵字隱藏父類方法顯示調(diào)用父類的構(gòu)造方法實例化子類時是否調(diào)用了父類的構(gòu)造方法?順序如何?(子類會調(diào)用父類默認(rèn)無參的)利用構(gòu)造方法設(shè)置公共屬性,也就是說若父類的構(gòu)造方法有參數(shù),應(yīng)該如何處理呢?顯示調(diào)用父類的構(gòu)造方法,關(guān)鍵字: baseProtected(S)protected訪問修飾符不允許其他非子類訪問修改剛剛的練習(xí),父類中把訪問修飾符改成protected子類中還能被調(diào)用到嗎?其他非子類能調(diào)用嗎?繼承的傳遞性.繼承的單根性.類型轉(zhuǎn)換(ls)(S)Person p = new Teacher();子類可以隱式的轉(zhuǎn)換成父類.Teacher t=(Teacher)p;is和astypeA is type B

溫馨提示

  • 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

提交評論