C#基础笔记(第十天)

1.字段、属性、方法、构造函数
字段:存储数据
属性:保护字段,对字段的取值和设值进行界定
道:描述对象的表现
构造函数:初始化对象(给目标的每个属性依次的赋值)
看似中成员,如果未加访问修饰符,默认都是private
给各国一个个体的字段都配备一个国有的性能
性之原形就是鲜单道

博士研究生毕业的时节,一切不再像大学毕业时那么打动,仿佛经历过千军万马,一切就是和至渠道成,就连离别时自己想象着之眼泪,也没即时过来,只是对带来微笑,默默不舍,互道珍重。此情此景,不禁为我回忆那个美丽的海滨小市——威海,6年前,就当那里,告别了本人的学府——哈尔滨工业大学(威海)。

当我们创建好对象后
深受此目标的性质赋值用set
打印是特性之价的时光实施get

我入学是当2005年,作为一如既往名叫内陆学子,首先惊艳我的,是那么蔚蓝辽阔的海,从此,遥远的圈海梦成为了易可以实现的政工,而及时为已成了自家望高中同学炫耀的本。学校后来个小土丘,在无给出之前,我们那个爱爬上生小山去看西,不赛的高山,爬上来也着实要费点儿劲,然而,登顶后的放宽和快也是不管与伦比的。立于山尖,三给环抱和,晴天碧海,极目远眺,思维可以轻易驰骋跳跃。而当傍晚光临,金纱般的余晖轻盈地笼罩着金海滩,海和上的交接处更见各种荣誉,瑰丽无比,是朋友依偎漫步的好去处。

this:当前仿佛的靶子
this:调用当前相仿
this是将性能与一部分变量区分开来的。
构造函数:1、没有回去值 连void也从没
2、构造函数的名跟类名相同

碰巧入学的本人还有幸地冲击了20周年校庆。学校里张灯结彩,到处充斥着青春活力,学生会以及各色社团争先恐后纳新,而我辈这些初次离家的新鲜血液也急想使找到与自己来相同兴趣爱好朋友。那时候还不顶盛喷绘海报,大都是周密手绘制作使变成,诚意十足。几乎每个社团前面都围满了俺们这么的新生,带在奇怪的夹眼,忙不迭地跟学长学姐们咨询,生怕自己莽撞落了晚,不可知在。

构造函数可以重载
:this(name,0,0,gender)

高中的自我,虽然成绩对,但天性偏内向同守旧,在大学里本身思只要挑战不均等的和睦。于是,我果断报名参加了记者协会举办的“校园生活面面观”演讲比赛。我同一尽又平等满修改好之手稿,赛前未停止地吃好打气加油。在很简陋的A楼教室里,我永远记的友好率先不善给观众演讲的景况。一双双肉眼目不转睛在我,仿佛一把把锋利的宝剑,我心头扑通扑通跳得厉害,紧张不安到甚至忘了台词,后来自我同样想,挑战自己生什么好怕的,豁出去了,渐渐开始围绕主题自由发挥,逐渐看到了观众们一定赞赏的视力。时至今日,演讲的技能与办法本身依然稀里糊涂,那不行比可能也早已让人遗忘干净,但自己直接记并深入感谢那不行交锋,那次突破性的过,让自家重新认识了上下一心,也再次设计由好的大学生活。

new:1、在内存中开拓一片空间
2、在开辟的空中创建对象
3、调用对象的构造函数

一经仍于学的建造,首有助于典型的工科起名特色,以A楼、B楼、C楼等字母为叫。最有特点之是主楼H楼,从校门口望过去,宏伟壮观,主楼前面的音乐广场是室外文艺汇演之绝佳舞台。而冬天大雪纷飞的时候,这里又是溜冰打雪仗的好地方。A楼、M楼、G楼以及新兴之N楼都是咱自习或位移最容易的场所。A楼历史最遥远,站起时凳子有时见面“吱呀”一名气,自习的总人口相对较少,早期学生运动经常在那里举行。N楼在本人大三时光才建成,依山傍海,适逢学校试行基础学部,全校的新兴等都以此间上后自习,静谧的校一角洋溢着浓厚学习氛围。

限制:set get 构造函数

联手走来,可亲可敬的教育工作者们的教诲至今言犹在耳,而同学、室友、老乡等的友谊也值得自己一辈子珍藏。攻读博士中,总会定时收取校报老师被自家寄来的校报,薄薄的封皮里,承载着厚厚的来自全校的挂。每次打开报纸,我究竟会认真地起同本读到四本,看看母校的初转变,看到学弟学妹们获得了各奖项,心里总是默默自豪;而细致读四本的文学作品总能唤起自己立马勾勒散文的欣,进而想起在校报期间,几位老师热情耐心指导我们写之个别瞬间,一切仿佛还当昨天。有学的学弟学妹们来自己所于的理化细胞所与夏令营或者保研面试时,总会来搜寻我同一叙,虽从未谋面,却很近,言谈之间聊及学校的种,总是完全犹不直。

静态方法 类名.方法名
实例方法 对象名.方法名

光阴之齿轮不紧不慢往前移动,却并未停歇,转眼间相差符合大学就将近10满,离开学校为都接近6年,仍忘不了以学校的那些日子。在那里,我是因为懵懂走向成熟,由模糊走向从容。而今,母校为早已30华诞,30年之质变,30年的明,母校学子的人影都遍布于大江南北,驰骋于各行各业,正为故乡的建设同祖国的兴旺发达贡献在好的力。感谢学校,感谢那梦里之次故园,衷心地祝愿母校的明天越发光明。

静态方法只能看到静态成员
静态类不克创建对象

2、命名空间
命名空间可以看做是接近的公文夹
好看类是属于命名空间的。
如果在脚下色被从未是看似的命名空间,需要我们手动的导入这个仿佛所当的
取名空间。
1)、用鼠标去接触
2)、alt+shift+F10
3)、记住命名空间,手动的失去引用

3、在一个类别被援另一个品类的接近
1)、在解决方案资源管理器的援右键添加引用
2)、引用命名空间

3、值类型和援类型
区别:
1、值类型和援类型在内存达到囤积的地方不相同。
2、在传递值类型和传递引用类型的时节,传递的措施不一致。
值类型我们称之为值传递,引用类型我们称为引用传递。
咱俩学的值类型和援类型:
值类型:int、double、bool、char、decimal、struct、enum
援类型:string、自定义类、数组
存储:
值类型的值是储存于内存的栈当中。
引用类型的价是储存于内存的堆积中。

堆积如山、栈、静态存储区域

int number=10;
在仓房中开发一个上空,在斯空间存储10,给这个空间从名叫number
string s=”123″;
在积着开拓一个空中,在此空间存储”123″,有一个地址(引用) 0x001001,
在仓房中开拓一个空间,存堆中之地址0x001001,起名叫s。现在s是依为堆中的内存的

Person zsPerson=new Person();
zsPerson.Name=”张三”;

每当积中开辟空间,在这个空间存储 new Person();
“张三”,有一个地点(引用)
当库中开发一个上空,存堆中的地方,起名叫zsPerson

4、字符串
1)、字符串的不可变性
当您叫一个字符串重新赋值之后,老值并无灭绝,而是重开发一块空间存储新值。
当次结束晚,GC扫描整个内存,如果发现有些空间没有受指向,则立即将它销毁。

int 重新赋值 会在原来的栈空间覆盖原值
string
重新赋值,会以原先的积聚空间重开发一个空间存新值。栈中存地址之长空不转移

创建 string s1=”张三”
        string s2=”张三”
仅当积中开拓一块空间 存储”张三”
于仓库中开拓两块空间命名为s1和s2指为堆中之半空中(存储堆着之地方)

起名 1

私说明:

①当您创造了S1和S2后,就会当库房中开拓两个空中

   一个叫S1,内存地址是1000XX

   一个深受S2,内存地址是2000XX

②你给S1,S2赋值的string 类型 “张三”

   是在堆中开辟的上空内

   它为产生只内存地址是XX0001

③若栈中的S1,S2空间存的凡积着  的内存地址XX0001,他们是同一个事物

④如果您又  S1=”李四”

                    S2=“李四”

 
 它们啊只是将S1,S2里面的内存地址指向堆中开辟的一个让”李四”的上空的内存地址。

   原来堆中存的”张三”不会见产生其它移。

⑤当您清理内存的时节,那个”张三”因为内存地址没有让引述了,就会为清理掉(垃圾回收)

窗口-即时-及时窗口-&s1 &s2 可以看s1和s2的内存地址
上面是栈中的地点,下面是积中的地址

起名 2

2)、我们可管字符串看做是char类型的一个仅念数组。
ToCharArray();将字符串转换为char数组
new string(char[] chs):能够以char数组转换为字符串

1 string s = "abcdefg";
2 char[] chs = s.ToCharArray();
3 chs[0] = 'b';
4 s= new string(chs);
5 Console.WriteLine(s);
6 Console.ReadKey();

Stopwatch 计时器
Stopwatch sw=new Stopwatch();
sw.Start();开始计时
sw.Stop();停止计时
sw.elapsed 时实例测量得出的究竟运行时

StringBuilder sb=new StringBuilder();

sb.Append(i);追加

会将这i累加到sb里面

 1 StringBuilder sb = new StringBuilder();
 2 //string str = null;
 3 Stopwatch sw = new Stopwatch();
 4 sw.Start();
 5 for (int i = 0; i < 100000; i++)
 6 {
 7 //str += i;
 8 sb.Append(i);
 9 }
10 sw.Stop();
11 Console.WriteLine(sw.Elapsed);
12 Console.ReadKey();

 

string 为什么这样慢,因为它们每次都如开始空间
stringbuilder这么快是以其当内存中开始空间,用来用去都是同一块类。
末尾stringbuild还是得只要tostring转为string 类型。

5、字符串提供的各种艺术
//把字符串转为大写
LessonOne =LessonOne.ToUpper();
//把字符串转为小写
LessonOne=LessonOne.ToLower();
//比较少只字符串的价
LessonOne.Equals(LessonTwo,StringComparison.OrdinalIgnoreCase)
Equals同样 StringComparison.OrdinalIgnoreCase
枚举.忽略被比较的字符串的大大小小写

string s = “a b c 3 12 – + _ , == fdf”;
//分割字符串Split
//把非思要之字符都勾以char数组里
//数组虽然关乎少了,但是还是养了一个缺损””
//后面长,StringSplitOptions.RemoveEmptyEntries把空让结果
char[] chs = { ‘ ‘,’_’,’=’,’+’,’,’,’-‘};
string[] str = s.Split(chs,StringSplitOptions.RemoveEmptyEntries);
Console.ReadKey();

练习

Console.WriteLine("请输入日期,格式如2008-08-08");
string s = Console.ReadLine();
//可以不用创建char []chs,直接把它New在里面
string [] date= s.Split(new char [] {'-' },StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("你输入的日期是{0}年{1}月{2}日",date[0],date[1],date[2]);
Console.ReadKey();

//contains(包括),判断字符串中是否含有指定的字符串

//Replace(替换) 将字符串中有只字符串替换成一个新的字符串,返回
练习

1 string str = "国家领导人老赵";
2 if(str.Contains("老赵"))
3 {
4 str=str.Replace("老赵","**");
5 }
6 Console.WriteLine(str);
7 Console.ReadKey();

1 //Substring 截取字符串
2 string str = "今天天气好晴朗,处处好风光";
3 //把字符串当做数组,从下标0开始截取
4 str = str.Substring(1);
5 //从“天”开始截取,截取2个字
6 str = str.Substring(1,2);
7 Console.WriteLine(str);
8 Console.ReadKey();

 1 //StartsWith()判断字符串中是否以子串value开始 
 2 //EndsWith()判断字符串中是否以子串value结束 
 3 //使用方式相同
 4 string str = "今天天气好晴朗,处处好风光";
 5 if(str.StartsWith("今天"))
 6 {
 7 Console.WriteLine("是的");
 8 }
 9 else
10 {
11 Console.WriteLine("不是");
12 }
13 Console.ReadKey();

1 //判断某个字符串在字符串中第一次出现的下标位置,如果没有返回-1,由int类型接受
2 string str = "今天天气好晴朗,处处好风光";
3 int n=str.IndexOf('天');
4 //后面加个Int类型数字,表示找字符串中的第几个‘天’的下标
5 //int n=str.IndexOf('天',2);
6 //如果要找到所有‘天’的下标,就需要用循环来找
7 Console.WriteLine(n);
8 Console.ReadKey();

1 //LastIndexOf():判断某个字符串在字符串中最后一次出现的位置,如果没有同样返回-1
2 //LastIndexOf()经常和Substring配合使用
3 string path = @"c:\a\b\c\d\e\f\g\ff\苍\ds\fgd\d\苍老师.wav";
4 //找最后一个斜线后出现的文字才是最准确的,一直截到最后
5 int index=path.LastIndexOf("\\"); 两个斜线表示一个斜线

练习

1 string path = @"c:\a\b\c\d\e\f\g\ff\苍\ds\fgd\d\苍老师.wav"; @代表字符串中的\都表示\
2 int index = path.LastIndexOf("\\");字符串中\\代表一个\
3 path=path.Substring(index+1); 截取是从\开始,所以要加1
4 Console.WriteLine(path);
5 Console.ReadKey();

1 //Trim():去掉字符串中前后的空格
2 //TrimEnd():去掉字符串中结尾的空格
3 //TrimStart():去掉字符串中前面的空格
4 string str = " hahaha ";
5 str=str.Trim();
6 Console.Write(str);
7 Console.ReadKey();

 1 //string.IsNullOrEmpty():判断一个字符串是否为空或者为null
 2 string str = null;
 3 if(string.IsNullOrEmpty(str))
 4 {
 5 Console.WriteLine("是的");
 6 }
 7 else
 8 {
 9 Console.WriteLine("不是");
10 }
11 Console.ReadKey();

1 //string.Join():将数组按照指定的字符串连接,返回一个字符串。
2 string[] name = { "张三","李四","王五","赵六","田七" };
3 string str=string.Join("|", name); params可变参数:可以放数组也可以放参数
4 Console.WriteLine(str);
5 Console.ReadKey();

1)、Length:获得当前字符串中字符的个数
2)、ToUpper():将字符转换成为那个写形式
3)、ToLower():将字符串转换成为小写形式
4)、Equals(lessonTwo,StringComparison.OrdinalIgnoreCase):比较单薄独字符串,可以忽略大小写
5)、Split():分割字符串,返回字符串类型的数组。
6)、Substring():截取字符串。在截取的时光包含要截取的死去活来位置。
7)、IndexOf():判断有字符串在字符串中率先不成面世的职位,如果无返回-1、值类型和援类型在内存达到囤积的地方不平等。
8)、LastIndexOf():判断有字符串在字符串中最后一浅面世的职位,如果无同返回-1
9)、StartsWith():判断以….开始 bool类型判断
10)、EndsWith():判断以…结束 bool类型判断
11)、Replace():将字符串中有只字符串替换成一个初的字符串
12)、Contains():判断有字符串是否包含指定的字符串 bool类型判断
13)、Trim():去丢字符串中上下的空格
14)、TrimEnd():去丢字符串中最后的空格
15)、TrimStart():去丢字符串中前的空格
16)、string.IsNullOrEmpty():判断一个字符串是否为空或者为null
17)、string.Join():将数组按照指定的字符串连接,返回一个字符串。

6.复习
字符串需要掌握的亮点
1)字符串不可变,每新建一个字符串都见面在内存中开拓一块新的半空中
2)字符串的法门

StringBuilder和String的区别
String在进展演算时(如赋值、拼接等)会来一个初的实例,而StringBuilder则免见面。
行使StringBuilder进行操作,最后又就此ToString转为String类型即可。

1 string path = @"C:\Users\SJD\Desktop\22.txt"; 路径
2 string [] str= File.ReadAllLines(path,Encoding.Default); 
3 //File(静态类).ReadAllLines(方法,读取所有的行)读取的全是乱码
4 //Encoding.Default 去除乱码
5 Console.ReadKey(); 

7.练习
char类型数组转为string类型

1 char[]chs={‘1’,‘2’,‘3’};
2 string str=new string(chs);

告出字符串中存有出现的e的岗位
@第一栽方式(必须会)

 1 string str = "daghdewejhadgwehhjfhajejwwe";
 2 int index = str.IndexOf('e');
 3 Console.WriteLine("第1次出现e的位置是{0}", index);
 4 int count = 1;
 5 while (index != -1)
 6 { 
 7 index = str.IndexOf('e', index + 1);
 8 count += 1;
 9 if (index == -1)
10 {
11 break;
12 }
13 Console.WriteLine("第{0}次出现e的位置是{1}", count, index);
14 }
15 Console.ReadKey();

第二种植方法
找寻多只字之话语虽生

1 string str = "daghdewejhadgwehhjfhajejwwe";
2 for (int i = 0; i < str.Length; i++)
3 {
4 if(str[i]=='e')
5 {
6 Console.WriteLine(i);
7 }
8 }
9 Console.ReadKey();

8.继承
各国一个像样都使独自写于一个近似公事里。

我们也许会见当有的接近吃,写一些双重的分子,我们得以这些再次的积极分子,
单身的包裹到一个看似吃,作为这些类似的父类。

格式 子类:父类
Student、Teacher、Driver 子类 派生类
Person 父类 基类

子类继承了父类,那么子类从父类那里继承过来了啊?
第一,子类继承了父类的属性与方,但是子类并没有继承父类的村办字段。能见到啊非可知用
李一个有钱亲戚挂了,受益人是李,但是没被他银行密码。他连续过来了可用非了。
问题:子类有无出持续父类的构造函数?
答:子类并没继承父类的构造函数,但是。子类会默认的调用父类无参数的构造函数,
创立父类对象,让子类可以运用父类中之积极分子。
据此,如果当父类中又勾了一个发出参数的构造函数之后,那个无参数的尽管为提到少了,
子类就调用不交了,所以子类会报错。

实践完毕父类无参构造函数,再失执行子类的
履父类的构造函数,就相当给创造一个父类的对象
坐没父类的目标,子类没办法用父类的性
创子类对象的早晚,也有意无意创建了他父类的靶子,这样才能够用到父类的属性与措施,成员
子类包含了团结之性和父类对象(构造函数),内部的父类又噙了外的习性和章程

后续构造函数的进程可以投入子类的属性

父类默认调用无参的比方未是有参的
解决办法:
1)、在父类中重复勾一个不论是参数的构造函数。
2)、在子类中展示的调用父类的构造函数,使用要字:base()

9.后续的性状
1、继承的单根性:一个子类只能发出一个父类。
2、继承的传递性:爷爷-爸爸-儿子-孙子

10.查看类图
下手键类文件-视图-查看类图 可以看类之间的继承关系

11.object是所有类的基类。
而没给一个类继承于另外一个像样,那么这近乎即延续于object

12.new关键字
1)、创建对象
2)、隐藏于父类那里继承过来的同名成员。
隐藏的名堂就是是子类调用不至父类的分子。

子类成员称及父类成员称一致,会躲继承的父类成员,隐藏后果就是调动不顶了。
添加new后只是不报错

13.复习
值类型
引用类型
字符串 起名不可变性
一律垛方法
StringBuilder
继承 单根性
传递性
子类跟父类构造函数的关系
子类继承了父类的呀?
new关键字

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图