C# 面向对象系列笔记(二)

v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

Normal
0
false

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

第二天

1. 字符串的特性

---à不可变性,每对字符串做拼接或者重新赋值类的操作,都会在内存中产生一个新的实例。

所以说,在.Net平台下,如果你对一个字符串进行大量的拼接赋值等操作,会产生大量的垃圾

---à我们可以将字符串看做是char类型的只读数组

当我们以索引的方式去访问某一个字符串的时候,获得的是char类型

Eg://我们将StringBuilder这个对象作为拼接字符串的工具

//拼接完成后  依然会把它转换成字符串。

StringBuilder sb = newStringBuilder();

//创建计时对象

Stopwatch sw = newStopwatch();

//00:01:43.1416217

//00:00:00.1009880

//开始计时

sw.Start();

for (int i = 0; i < 100000; i++)

{

//  str += i;

sb.Append(i);

}

//结束计时

sw.Stop();

//输出这段代码的运行时间

Console.WriteLine(sw.Elapsed);

//Console.WriteLine(sb.ToString());

Console.ReadKey();

2. 字符串的常用函数:

<1>.ToCharArray():将一个字符串转换成一个char类型的数组。     

<2>.new string (char[] chs):根据一个char类型的数组返回一个字符串。

             string str = "abcdef";

//字符串--->char数组(可读可写)

char[] chs = str.ToCharArray();

chs[0] = ‘b‘;

//将改变后的char数组再次转换成字符串

str = newstring(chs);

Console.WriteLine(str[0]);

<3>.ToUpper():返回字符串的大写形式;        

<4>.ToLower():返回字符串的小写形式;

<5>.Equals(,stringcomprasion...):比较两个字符串是否想等,可以忽略大小写

         Console.WriteLine("请输入你喜欢的课程");

string lessonOne = Console.ReadLine();

//转换成大写

//lessonOne = lessonOne.ToUpper();

//转换成小写

//lessonOne = lessonOne.ToLower();

Console.WriteLine("请输入你喜欢的课程");

string lessonTwo = Console.ReadLine();

//lessonTwo = lessonTwo.ToUpper();

//lessonTwo = lessonTwo.ToLower();

if (lessonOne.Equals(lessonTwo, StringComparison.OrdinalIgnoreCase))

{

Console.WriteLine("你们喜欢的课程相同");

}

else

{

Console.WriteLine("你们喜欢的课程不相同");

}

<6>.Split():分割字符串,返回字符串类型的数组;

          string str = "abc   ,,,d, ,--,ef,,--  0987";

//将一个字符串中没用的东西去掉

string[] strNew = str.Split(newchar[] { ‘ ‘, ‘,‘, ‘-‘ }, StringSplitOptions.RemoveEmptyEntries);

<7>.Contains():判断字符串中的是否包含指定的字符串;

<8>.Replace():将老字符串替换成新字符串;

 

Console.WriteLine("请输入你的评论");

string input = Console.ReadLine();

//1、判断评论中是否包含敏感词

if (input.Contains("老赵"))

{

//2、进行替换

input = input.Replace("老赵", "***");

}

Console.WriteLine(input);

 

<9>.StartsWith():判断字符串是否以指定的字符串开始;

<10>.EndsWith():判断字符创是否以制定的字符结束;

string str = "举头望明月,我叫郭德纲";

if (str.StartsWith("头"))

{

Console.WriteLine("是的");

}

else

{

Console.WriteLine("不是");

}

Console.WriteLine(str.EndsWith("举头望明月,我叫郭德纲") ? "是的" : "不是");

 

<11>.Trim():去掉字符串两端的字符。但是,不能去掉字符串中间的字符;

<12>.TrimStart():只能去掉字符串前面的空格;

<13>.TrimEnd():只能去掉字符串后面的空格;

string str = "----  ---1   2---3-  --  ----";

str = str.Trim(); //去掉字符串两边的空格

str = str.TrimStart(); //去掉字符串前边的空格

str = str.TrimEnd(); //去掉后面的空格

str = str.Trim(‘-‘, ‘ ‘);

string[] strNew = str.Split(newchar[] { ‘-‘, ‘ ‘ }, StringSplitOptions.RemoveEmptyEntries);

Console.Write(str); 

  

<14>.SubString():截取指定的字符串,可以选择截取的长度;

string str = "今天我要是上课睡觉了,我以后就单身一辈子";

str = str.Substring(12, 2);

Console.WriteLine(str);

Console.ReadKey();

<15>.IndexOf():获取指定字符串第一次出现的位置,如果没有,则返回

-1;

string str = "举头望明头头月,我叫头郭头德纲";

int index = str.IndexOf(‘a‘, 3);

onsole.WriteLine(index);

<16>.LastIndexOf():取某一个字符串最后一次出现的位置,如果没有,则返回-1;

string path = @"c:\a\b\c\e\亚廷\d\f\苍老师苍老师.avi";

//找到某一个字符在字符串中最后一次出现的位置

//获得 \\在路径中最后一次出现的位置

int index = path.LastIndexOf(‘\\‘);

string fileName = path.Substring(index + 1);

Console.WriteLine(fileName);

 

<17>.静态函数

       -àstring.IsNullorEmpty():判断指定的字符串是否为空或null;

Console.WriteLine(string.IsNullOrEmpty(null) ? "yes" : "no");

 

       -àstring.Join():将指定的分隔符插入数组每个元素的后面,或者返回一个字符串,默认最后一个元素后面没有;

string[] names = { "张三", "李四", "王五", "赵六", "田七" };

//张三|李四|王五|赵六|田七

string str = string.Join("|", names);

Console.WriteLine(str);

3. 继承

在我们设计类中,发现有的时候相似的几个类中会出现大量的冗余代码

为了解决这个问题,我们在设计类的时候,采用继承来解决冗余代码的问题。

继承让类与类之间产生了关系(父子类的关系,子类与子类的关系),为后面要学习的多态打下了基础。

我们把这些类当中相同的成员,单独的拿出来,封装成一个类。

让这些类去继承这个类。

注意:---子类继承了父类的属性和函数,并没有继承父类的私有字段。

---子类并没有继承父类的构造函数,二是会默认的调用父类中无参数的构造函数。

因为父类有可能再无参数的构造函数中对自己成员进行初始化

所以子类如果想要得到父类中初始化之后的数据,就必须调用父类中无参数的构造函数。

父子类的构造函数关系:

我们需要父类的那个构造函数的原因是因为父类在那个无参数的构造函数中对自己的数据进行了初始化

如果我们在父类中写了一个新的构造函数后,那个默认的无参数的构造函数就被干掉了

此时子类就调用不到了,解决办法:

--à在父类中重复写一个无参数的构造函数

--à显示的让子类调用父类有参数的构造函数 + :base;

classStudent : Person

{

public Student(string name, int age, char gender, int id)

: base(name, age, gender){}}

继承的两大特性:

1.单根性     一个子类只能有父类。

2.传递性

4.里氏转换

--->子类可以赋值给父类:如果有一个地方需要一个父类,我们可以给一个子类代替。

--->如果父类中装的是子类对象,那么可以将这个父类转换成对应的子类

Person per = newStudent();

Student s = (Student)per;

Console.WriteLine("转换成功");

string s1 = string.Join("|", "张三", 100, 3.14, true, ‘男‘);

Console.WriteLine(s1);

Console.ReadKey();

v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

时间: 2024-08-04 03:33:05

C# 面向对象系列笔记(二)的相关文章

面向对象之笔记二——————原型与继承

原型与继承 原型 为什么需要原型? 构造器创建对象的时候, 实际上会有成员重复 如果使用 构造器 this.方法名 = function .... 方式创建对象. 那么每一个对象对应的方法就会重复 function Person( name ) { this.name = name; this.sayHello = function() { console.log( '你好,我是 ' + this.name ); }; } var p1 = new Person( 'Hello' ); var

C# 面向对象系列笔记(三)

v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} Normal 0 false 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {

C# 面向对象系列笔记(四)

v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} Normal 0 false 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {

C# 面向对象系列笔记(五) 完结

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; ms

Bootstrap快速学习笔记(2)表单系列之二

欢迎收看大奥编写的Bootstrap快速学习笔记(2)表单系列之二 本学习笔记根据[慕课网]教程修改而来,用它学习Bootstrap,将会带来全新的体验哦: 表单控件大小 表单控件状态 按钮 图像 详细介绍 表单控件大小表单控件大小可以通过给表单控件添加class类来实现,如果想要比较大,则添加input-lg类,如果想要比较小, 则添加input-sm类,但这仅是对高度进行了处理,如果要对宽度进行处理,需要在每个input控件外围添加div容器并带有col-xs-4类,并 且要在这组控件的外围

Bootstrap快速学习笔记(1)排版系列之二

欢迎收看大奥编写的Bootstrap快速学习笔记(1)排版系列之二 本学习笔记根据[慕课网]教程修改而来,用它学习Bootstrap,将会带来全新的体验哦: 表格 表格行的类 详细介绍 表格表格是Bootstrap的基础组件之一,有一个基础样式和四个附加样式以及一个响应式样式,全部通过class类来实 现,.table:基础表格,这是无论哪种类型的表格都必不可少的类:.table-striped:斑马线表格,更具可读性:.table- bordered:带边框的表格:.table-hover:鼠

面向对象系列二(封装)

只需要最简单的操作就能实现一系列复杂的功能,是做一个个技术攻克的目的.一台精密仪器,一架家用电器,一个小米手机,这些可能我们都在用,或者用过.它们的内部都无比的复杂,使用了各种各样的配件,运用了极多的原理和知识.我们在使用的时候都具有相同的感受:简单.方便.太好了!面对原本复杂的东西,我们却能通过简单介绍就能运用自如,甚至有的能无师自通,这都为什么?这就用到了面向对象的封装性. 面向对象的封装性就是将复杂的处理封装在"盒子"的内部,只凭借装外壳的少量的按钮或键盘就能轻松实现功能.哦,原

javascript面向对象学习笔记(二)——创建对象

javascript面向对象学习笔记(二)--创建对象 工厂模式 该模值抽象了创建具体对象de过程.用函数来封装噫特定接口创建对象的细节. function createPerson(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){ alert(this.name); }; return o; } var person1=createPerson("Chiaki&

5.3-全栈Java笔记:面向对象特征(二)封装、多态

封装(encapsulation) 封装的作用和含义 我要看电视,只需要按一下开关和换台就可以了.有必要了解电视机内部的结构吗?有必要碰碰显像管吗?制造厂家为了方便我们使用电视,把复杂的内部细节全部封装起来,只给我们暴露简单的接口,比如:电源开关.具体怎么内部实现的,我们不需要操心. 需要让用户知道的暴露出来,不需要让用户了解的全部隐藏起来.这就是封装. 我们程序设计要追求"高内聚,低耦合". 高内聚就是类的内部数据操作细节自己完成,不允许外部干涉:低耦合:仅暴露少量的方法给外部使用,