1.構(gòu)造函數(shù)
- 類(lèi)名首字母大寫(xiě)
- 構(gòu)造函數(shù):可以用來(lái)創(chuàng)建對(duì)象犹菇,并在構(gòu)造函數(shù)中對(duì)對(duì)象進(jìn)行初始化(簡(jiǎn)化初始化過(guò)程--給對(duì)象的每個(gè)屬性賦值)仔燕;構(gòu)造函數(shù)可以有重載螟蝙;類(lèi)本身會(huì)有一個(gè)默認(rèn)的、無(wú)參的構(gòu)造函數(shù)扼褪,當(dāng)你寫(xiě)了一個(gè)(有參或者無(wú)參的構(gòu)造函數(shù)時(shí))想幻,默認(rèn)的無(wú)參的構(gòu)造函數(shù)都被干掉了;
-
構(gòu)造函數(shù)是一個(gè)特殊的方法
1)構(gòu)造函數(shù)沒(méi)有返回值话浇,連void也沒(méi)有
2)構(gòu)造函數(shù)名必須與類(lèi)名一致
3)構(gòu)造函數(shù)的訪(fǎng)問(wèn)修飾符必須是public(若是private脏毯,則創(chuàng)建對(duì)象時(shí)無(wú)法對(duì)對(duì)象進(jìn)行初始化)
4)創(chuàng)建對(duì)象的時(shí)候會(huì)執(zhí)行構(gòu)造函數(shù)
沒(méi)有構(gòu)造函數(shù)時(shí)對(duì)對(duì)象初始化
2.new關(guān)鍵字
- new關(guān)鍵字
Person zsPerson = new Person();
new幫助我們做了三件事:
1)在內(nèi)存中開(kāi)辟一塊空間
2)在開(kāi)辟的空間中創(chuàng)建對(duì)象
3)調(diào)用對(duì)象的構(gòu)造函數(shù)初始化對(duì)象
3.this關(guān)鍵字
-
this關(guān)鍵字
1)代表當(dāng)前類(lèi)的對(duì)象
2)在類(lèi)當(dāng)中顯示地調(diào)用本類(lèi)的構(gòu)造函數(shù)(:this)
有參數(shù)的地方直接用參數(shù)(如name幔崖,chinese等)食店,沒(méi)有參數(shù)的地方賦默認(rèn)的初值(如0,‘男’)
在類(lèi)當(dāng)中顯示地調(diào)用本類(lèi)的構(gòu)造函數(shù)具體寫(xiě)法
3)使用this可以區(qū)分局部變量和屬性
使用this可以區(qū)分局部變量和屬性
4.析構(gòu)函數(shù)
- 析構(gòu)函數(shù)
格式:~析構(gòu)函數(shù)名(){ }
1)當(dāng)程序結(jié)束時(shí)赏寇,析構(gòu)函數(shù)才執(zhí)行叛买,用于幫助我們釋放資源(c#使用了GC垃圾回收器默認(rèn)幫我們釋放資源)
2)如果想立刻釋放資源,自己顯示的寫(xiě)一個(gè)析構(gòu)函數(shù)
5.屬性只讀
實(shí)戰(zhàn):屬性若是只讀不可寫(xiě)的蹋订,那么通過(guò)字段來(lái)改變參數(shù)的值率挣,傳入?yún)?shù)可用構(gòu)造函數(shù)
6.命名空間
- 命名空間
缺少命名空間時(shí)引用命名空間快捷鍵 : ALT+SHIFT+F10然后敲回車(chē); -
在一個(gè)項(xiàng)目中引用另一個(gè)項(xiàng)目的類(lèi)
1)添加引用
2)引用命名空間
第一步.1:右鍵引用--點(diǎn)擊“添加引用”
第一步.2:引用項(xiàng)目“01復(fù)習(xí)”露戒,所以在前面點(diǎn)勾椒功,點(diǎn)擊確定
第二步:添加命名空間--using 01復(fù)習(xí)
7.值類(lèi)型和引用類(lèi)型
- 值類(lèi)型和引用類(lèi)型:計(jì)算機(jī)中變量大致可以分為兩類(lèi),數(shù)值型變量和非數(shù)值型的變量智什;對(duì)c#而言动漾,分為值類(lèi)型和引用類(lèi)型兩種;
-
值類(lèi)型和引用類(lèi)型的區(qū)別:
1)值類(lèi)型和引用類(lèi)型在內(nèi)存上存儲(chǔ)的地方不一致荠锭;
2)傳遞值類(lèi)型和引用類(lèi)型的方式不一樣旱眯,值類(lèi)型稱(chēng)之為值傳遞,引用類(lèi)型稱(chēng)之為引用傳遞证九;
3)值類(lèi)型存儲(chǔ)在內(nèi)存的棧中删豺,引用類(lèi)型存儲(chǔ)在內(nèi)存的堆中;引用類(lèi)型也在棧上開(kāi)辟了空間存儲(chǔ)堆的地址愧怜;
值傳遞和引用傳遞的存儲(chǔ)區(qū)別 - 值類(lèi)型:int,double,bool,decimal,char,struct,enum
- 引用類(lèi)型:string呀页,數(shù)組,自定義類(lèi)和我們使用的所有類(lèi)
8.字符串及相關(guān)函數(shù)
-
字符串
特性:
1)字符串的不可變性拥坛,如下圖所示(當(dāng)你給一個(gè)字符串重新賦值之后蓬蝶,老值并沒(méi)有銷(xiāo)毀,而是重新開(kāi)辟一塊空間存儲(chǔ)新值)
注:當(dāng)程序結(jié)束時(shí)猜惋,如果發(fā)現(xiàn)內(nèi)存中有空間沒(méi)有任何東西指向它(“如下圖所示的“”張三”)丸氛,此空間會(huì)被GC垃圾回收器刪除;
字符串不可變性 -- “張三”沒(méi)有消失著摔,“10”消失了
兩個(gè)字符串內(nèi)容相同時(shí)只開(kāi)辟一塊空間
驗(yàn)證上圖 -- 1.打開(kāi)“即時(shí)”
驗(yàn)證上圖 -- 2.在“即時(shí)”窗口里面寫(xiě)上“&s1”回車(chē)缓窜,返回棧地址和堆地址,發(fā)現(xiàn)堆地址相同
2)可以將字符串看作是char類(lèi)型的一個(gè)只讀數(shù)組(即可以通過(guò)下標(biāo)去訪(fǎng)問(wèn)字符串中的某一個(gè)元素)
ToCharArray():將字符串轉(zhuǎn)換為char數(shù)組;
new String(char[] chs):能夠?qū)har數(shù)組轉(zhuǎn)換為字符串雹洗;
為啥把string當(dāng)成char類(lèi)型的只讀數(shù)組 & 如何改變string里面某個(gè)字符的值(方法一)
如何改變string里面某個(gè)字符的值(方法二) -
StringBuilder:綜上所述香罐,如果程序中進(jìn)行大量的拼接會(huì)導(dǎo)致內(nèi)存里垃圾很多,這是可以使用StringBuilder類(lèi)
(未使用StringBuilder)Stopwatch是一個(gè)計(jì)時(shí)器類(lèi)
(使用StringBuilder)與上圖的不同用紅線(xiàn)標(biāo)注 -
字符串的方法
字符串.Length;
是獲取字符串長(zhǎng)度时肿;
字符串.ToUpper();
是將字符串轉(zhuǎn)換成大寫(xiě)庇茫;
字符串.ToLower();
是將字符串轉(zhuǎn)換成小寫(xiě);
字符串1.Equals(字符串2)螃成;
的結(jié)果相當(dāng)于字符串1 == 字符串2旦签;
填入一個(gè)枚舉類(lèi)型的參數(shù)StringComparison.OrdinalIgnoreCase就可以忽略大小寫(xiě)進(jìn)行比較了
字符串.Split();
用來(lái)分割字符串寸宏,返回的是字符串類(lèi)型的數(shù)組宁炫;
使用Split()方法干掉不想要的字符后,被干掉的地方顯示null
注意:這里是string[]數(shù)組氮凝,所以會(huì)存在一項(xiàng)里面存多個(gè)字符(如下標(biāo)為4的項(xiàng)存了“dfd”)
如何讓上圖被干掉的地方不顯示null羔巢,填入一個(gè)枚舉類(lèi)型的參數(shù)StringSplitOptions.RemoveEmptyEntries
字符串.Contains();
返回值是bool類(lèi)型罩阵,判斷一個(gè)字符串里是否包含()l里出現(xiàn)的字符竿秆;
字符串.Replace(“被替換文字”,“替換文字”)稿壁;
返回一個(gè)字符串幽钢,用來(lái)替換字符串中的某些內(nèi)容;
字符串.Substring(截取字符串開(kāi)始下標(biāo)【傅是,截取長(zhǎng)度】)匪燕;
返回一個(gè)字符串,用于截取字符串中的一部分喧笔;
字符串.StartsWith(“字符串”)帽驯;
返回bool類(lèi)型的變量,判斷一個(gè)字符串是不是以()里的內(nèi)容開(kāi)始溃斋;
字符串.EndsWith(“字符串”)界拦;
返回bool類(lèi)型的變量,判斷一個(gè)字符串是不是以()里的內(nèi)容結(jié)束梗劫;
字符串.IndexOf(“字符串”【,“搜索起始位置”】)截碴;
返回int類(lèi)型的變量梳侨,找到()里的字符在字符串里第一次出現(xiàn)的位置,找不到返回-1日丹;
注意:“搜索起始位置”是為了找到非第一次出現(xiàn)的字符所在位置走哺,加了“搜索起始位置”這個(gè)選項(xiàng)后搜索時(shí)包括搜索的起始位置;
字符串.LastIndexOf(“字符串”)哲虾;
返回int類(lèi)型的變量丙躏,找到()里的字符在字符串里最后一次出現(xiàn)的位置择示;
LastIndexOf+Substring
組合使用,例如截取地址:
LastIndexOf+Substring
注意: 1.@符號(hào)的作用:取消\在字符串和路徑中的轉(zhuǎn)義作用
2."\"代表一個(gè)\晒旅,第一個(gè)\是轉(zhuǎn)義符
3.使用index+1栅盲,因?yàn)橐厝〉氖荺后面的內(nèi)容
字符串.Trim(“字符串”);
返回一個(gè)字符串废恋,去掉字符串中所有的空格谈秫;
字符串.TrimEnd(“字符串”);
返回一個(gè)字符串鱼鼓,去掉字符串中拟烫,尾部的空格;
字符串.TrimStart(“字符串”)迄本;
返回一個(gè)字符串硕淑,去掉字符串中,頭部的空格嘉赎;
string.IsNullOrEmpty(“字符串”)置媳;
返回一個(gè)bool類(lèi)型的變量,null或者是“”都會(huì)返回true曹阔;
string.Join(“指定分隔字符”半开,“字符或字符數(shù)組”);
返回一個(gè)字符串赃份,將指定字符放到每個(gè)數(shù)組元素后面且最后一個(gè)元素后面不放寂拆;執(zhí)行效果如下:
9.注意
如何把txt文檔讀到控制臺(tái)上
1.先拿到控制臺(tái)的路徑string path = @"路徑"
2.使用File.ReadALLLines(path,Encoding.Default)抓韩;
讀取文本中的所有內(nèi)容纠永,返回一個(gè)字符串?dāng)?shù)組;Encoding.Default是用來(lái)處理亂碼谒拴;能用if-else解決的都可以用三元表達(dá)式來(lái)寫(xiě)尝江;