10-2015年6月28日-基礎班第天靜態(tài)與非、命名空間值類型與引用字符串不可變性操作_第1頁
10-2015年6月28日-基礎班第天靜態(tài)與非、命名空間值類型與引用字符串不可變性操作_第2頁
10-2015年6月28日-基礎班第天靜態(tài)與非、命名空間值類型與引用字符串不可變性操作_第3頁
10-2015年6月28日-基礎班第天靜態(tài)與非、命名空間值類型與引用字符串不可變性操作_第4頁
10-2015年6月28日-基礎班第天靜態(tài)與非、命名空間值類型與引用字符串不可變性操作_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、static 靜態(tài)關鍵字例子: 全校1000名學生 都有一個屬性 學校名稱, 需要開辟1000個空間來存放學校名稱嗎?Static靜態(tài)成員適用的場景1、你的資源需要全局共享。2、如果你寫的類需要被當做工具類來使用。典型的工具類 Consolestatic 靜態(tài)關鍵字靜態(tài)和非靜態(tài)的區(qū)別 如果當前成員是靜態(tài)成員,那么需要加上static關鍵字進行修飾。 如果當前成員不是靜態(tài)成員,那么不需要static關鍵。 調用的區(qū)別:-靜態(tài)成員在調用的時候需要使用類名來調用。-但是非靜態(tài)成員在調用的時候要求使用對象名來調用。 非靜態(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。在不同命名空間下的類調用有兩種方法: 寫全稱 命名空間.類名先using引用命名空間,再調用AtL+shift+f10 (右鍵)堆和棧的區(qū)別(*)棧是編譯期間就分配好的內存空間,因此你的代碼中必須就棧的大小有明確的定義;局部值類型變量、值類型參數(shù)等都在棧內存中。堆是程序運行期間動態(tài)分配的內存空間,你可以根據(jù)程序的運行情況確定要分配的堆內存的大

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

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

5、r數(shù)組的字符串。一旦字符串被創(chuàng)建,那么char數(shù)組的修改也不會造成字符串的變化。例子:將字符串中的A替換為a。常見疑問誰說字符串不可變?string s = abc;s=123,s這不是變了嗎要區(qū)分變量名和變量指向的值的區(qū)別。程序中可以有很多字符串,然后由字符串變量指向他們,變量可以指向其他的字符串,但是字符串本身沒有變化。字符串不可變性指的是內存中的字符串不可變,而不是變量不變。string s10 = s1;/s10指向s1指向的字符串,而不是s10指向s1,哪怕s1以后指向了其他內存,那么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 在進行運算時(如賦值、拼接等)會產(chǎn)生一個新的實例,而 StringBuilder則不會。所以在大量字符串拼接或頻繁對某一字符串進行操作時最好使用 StringBuilder,不要使用 String字符串練習一:隨機輸入你心

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

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

9、除結果中的空白字符串);練習:從日期字符串(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結束;int IndexOf(string value):取子串value第一次出現(xiàn)的位置。Int IndexOf(string value,int startIndex)字符串的處理練習課上練習1:接收用戶輸

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

12、*;把“諸葛亮”,”鳥叔”,”卡卡西”,”卡哇伊”變成諸葛亮|鳥叔|卡卡西|卡哇伊,然后再把|切割掉總結字符串常用的方法;為什么要繼承分別寫一個Teacher類和一個Student的類,分析他們應該有哪些屬性和方法.假如系統(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類.(當我們定義一個類的時候,如果沒有寫:繼承一個類,那么這個類就繼承了object類)練習:定義一個Dog類和一個Cat 類,定義出一個父類它們都有Age,Weight的屬性,都有叫的方法Call:”我是動物”,另外Dog有Watch(看門)的方法,Cat有抓CatchMouse(抓老鼠)的

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

溫馨提示

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

評論

0/150

提交評論