又進入到了新的一周,現在到總結的時間了,繼續為大家總結一下今天在雲和學院所學的知識。
理論:
StringBuilder 和 String 的區別 String 在進行運算時(如賦值、拼接等)會產生一個新的實例,而 StringBuilder 則不會。所以在大量字符串拼接或頻繁對某一字符串進行操作時最好使用 StringBuilder,不要使用 String; 如果要操作一個不斷增長的字符串,盡量不用String類,改用StringBuilder類。兩個類的工作原理不同:String類是一種傳統的修改字符串的方式,它確實可以完成把一個字符串添加到另一個字符串上的工作沒錯,但是在.NET框架下,這個操作實在是劃不來。因為系統先是把兩個字符串寫入內存,接著刪除原來的String對象,然後創建一個String對象,並讀取內存中的數據賦給該對象。這一來二去的,耗了不少時間。而使用System.Text命名空間下面的StringBuilder類就不是這樣了,它提供的Append方法,能夠在已有對象的原地進行字符串的修改,簡單而且直接。當然,一般情況下覺察不到這二者效率的差異,但如果你要對某個字符串進行大量的添加操作,那麼StringBuilder類所耗費的時間和String類簡直不是一個數量級的。 對象的引用 int、decimal、bool、double byte 枚舉結構等類型(值類型)是傳遞拷貝;對象(引用類型)則是傳遞引用。 方法間傳遞對象 String 引用類型 數組 類結構如果寫構造函數 那麼就要把結構中所有的字段全部賦值
如果在結構中寫了構造函數,那麼 默認的構造函數還有,和類不同
在類中寫了有參數的構造函數 ,無參數的構造函數直接被干掉了
並且 在類中的構造函數中 可以 不用把所有字段都賦值
值類型和引用類型的區別 1.將一個值類型變量賦給另一個值類型變量時,將復制包含的值。引用類型變量的賦值只復制對對象的引用,而不復制對象本身。 2.值類型不可能派生出新的類型:所有的值類型均隱式派生自 System.ValueType。但與引用類型相同的是,結構也可以實現接口。 3.值類型不可能包含 null 值: 4.每種值類型均有一個隱式的默認構造函數來初始化該類型的默認值。 堆和棧的區別 棧是編譯期間就分配好的內存空間,因此你的代碼中必須就棧的大小有明確的定義;局部值類型變量、值類型參數等都在棧內存中。 堆是程序運行期間動態分配的內存空間,你可以根據程序的運行情況確定要分配的堆內存的大小。實操
StringBuilder的運用
接收用戶輸入的字符串,將其中的字符以與輸入相反的順序輸出。"abc"→"cba"
接收用戶輸入的一句英文,將其中的單詞以反序輸出。"hello c sharp"→"sharp c hello"
從Email中提取出用戶名和域名
文本文件中存儲了多個文章標題、作者,標題和作者之間用若干空格(數量不定)隔開,每行一個,標題有的長有的短,輸出到控制台的時候最多標題長度10,如果超過10, 則截取長度8的子串並且最後添加“...”,加一個豎線後輸出作者的名字。
分別寫一個Teacher類和一個Student的類(繼承的運用)
首先定義一個父類Person
在分別定義Teacher類和Student類
在Main函數裡調用方法
好了,今天就先寫到這裡了,明天再繼續吧...加油!