01、复习
02、添加命名空间
03、在一个项目中,引用另一个项目的类时
1)、添加引用
2)、引用命名空间
04、值类型和引用类型
1)、值类型和引用类型在内存上的存储地方不同
2)、在传递的方式不同,值类型我们成为值传递,引用。。。
值类型:int \\double\\bool\\char\\decimal\\struct\\enum
引用类型:string 、自定义类、数组
04、字符串『重点是字符串是引用类型!』
1)、字符串不可变性。
当给一个字符串重新赋值时,老值并没有删除。而是重新在堆空间,重新创建一个内存空间。
当程序结束后,也就是字符串没有指向后。
当GC扫描整个内存,如果发现有的空间没有被指向,立马干掉清空!
2)、字符串的方法
string s1="张三";
string s2="张三";
使用“即时窗口”查看。
--我们可以理解字符串看做是一个char类型的只读数组!
ToCharArray();将字符串转换成char数组。
new string(char[] chs);可以将char数组转换成为字符串。
一切的类型,都可以调用ToString();方法转换成字符串类型。
4、字符串提供各种方法
1)、Length--直接可以获得当前字符串的个数,即长度。
2)、ToUpper()--将字符串的各个字符转换成大写形式
3)、ToLower()--将字符串的各个字符转换成小写形式
4)、Equals(LessonTwo,StringComparison.OrdinalIgnoreCase)--比较两个字符串,忽略大小写。
5)、Split()--分割字符串,返回字符串类型。
//某个比较深得文件,且是特定的文件,如何找到。
//@消除\的转义作用,按原文件赋值
string path = @"C:\a\c\v\f\g\s\s\ss\f\f\dd\肖生克的救赎.rmv";
//"\"两个表是一个
int index = path.LastIndexOf("\");
//str = str.Substring(1, 2);
//Console.WriteLine(str);
path = path.Substring(index + 1);
Console.WriteLine(path);
6)、Substring--截取字符串。包含截取的参数位置。
7)、IndexOf--判断某个字符或者字符串在字符串中第一次出现的位置,如果没有返回-1;
8)、LastIndexOf()--判断某个字符或者字符串在字符串中最后出现的位置,如果没有返回-1;
9)、StartsWith()--判断。。。以什么开始
10)、EndsWith()--判断。。。以什么结束
11)、Replace()--将指定的字符或者字符串替换成新的字符或者字符串。
12)、Contains()--判断某个字符串是否包含指定的字符串
13)、Trim();--去除字符串前后的空格。
14)、TrimStart();--去除字符串前的空格。
15)、TrimEnd();--去除字符串后的空格。
16)、string.IsNullorEmpty();--判断一个字符串是否为空或者null;
17)、string.join();--将数组按照指定的字符串连接,返回字符串。
05、继承
我们可能在一些类中,重复的写一些成员,我们可以将这些重复的成员,单独的封装到一个类中,作为这些类的父类。
Student、Teacher、Driver 子类 派生类
Person 父类 基类
子类继承了父类,那么子类从父类哪里继承过来了什么?
首先,子类继承了父类的属性和方法,但是子类并没有继承父类的私有字段。『可以在对象调用,自动的看到,但不可使用』
一个问题:子类有么有继承父类的构造函数?
答:子类并没有继承父类的构造函数,但是,子类会默认的调用父类无参的构造函数,创建父类的对象,让子类可以使用父类中的成员。
所以,如果父类中重写了一个有参的构造函数,就会干掉无参的构造函数。
子类就没法调用不到无参的构造函数,此时写继承的子类就会集体报错。
解决方法:
1)、在父类中重新写一个无参的构造函数。
2)、在子类中显示的调用父类的构造函数,使用关键字:base()
06、继承的特性
1、继承的单根性:一个子类只能有一个父类。
2、继承的传递性
07、查看类图
08、Object是所有类的基础。
09、new关键字
1)、创建对象
2)、隐藏从父类哪里继承过来的同名成员。
隐藏的后果就是子类调用不到父类的成员。