JAVA,
JAVA,
常量
语法: 访问修饰符 const/readonly 数据类型 常量名=值
枚举(它表示一组有限的值,对可能的值进行约束)
将string类型转换为枚举类型的值 语法:(枚举类)(Enum.Parse(typeof(枚举类),“string”))
定义一个枚举:
public enum Genders
{Male/Male=0,Female/Female=1}
stu.Genders=Genders.Male;
int genderNum=(int)stu.Gender;//用于得到定义枚举时所指定的整形值
枚举类型的值,都有一个相对应的整形值
结构
结构的定义语法:访问修饰符 Struct 结构名
和类相似,使用时不用new,定义结构时的数据字段不能赋初值,使用时必须为结构的成员赋初值
结构不可有显示默认构造函数、不能被继承,使用构造函数的方法时需要用new
结构和类的区别:
|
类 |
结构 |
不同点 |
引用类型 |
值类型 |
可以被继承 |
不能被继承 |
|
可以有默认构造函数 |
不可以有默认构造函数 |
|
可以添加无参的构造函数 |
可以添加构造函数,但他们必须带参数 |
|
创建对象必须使用new
|
创建对象可以不用new |
|
结构中给字段赋值是错误的 |
类中可以给字段赋值 |
|
相同点 |
都可以包括字段、方法 |
|
都可以实现接口 |
值类型和引用类型:
值方式参数传递(基本类型传递) :值类型(不保留修改结果) 引用类型(可能保留修改)
引用方式参数传递(ref传递):值类型(保留修改结果) 引用类型(保留修改结果)
除了枚举和结构,基本数据类型,其他都是引用类型
索引器:
索引器的使用:
(1) 在MyClass类中将学员属性的类型由数组属性Student[]改为Student对象
(2) 添加一个Student类并加入索引器,然后将它的访问方式重载,使用姓名进行访问
Public Student this[int index]
{
Get{ return students[index];}
}
Public Student this[string name]
{
Get
{
Int i; bool found=false;
For(i=0; i<students.length; i++)
{
If(students[i].name==name)
{
Found=true; break;
}
}
If(found)
{
Return students[i];
}
Else
{
Return null;
}
}
}
访问student对象时,可以通过学员的姓名访问,也可以通过索引访问
MyClass myClass=new MyClass(”T01”);
myClass.Students[2].SaveHi();
myClass.Students[“周杰伦”].SayHi();
装箱和拆箱:
值类型装换为引用类型的过程成为装箱 拆箱相反
装过箱的才可以拆
泛型和泛型集合
泛型集合必须实例化
List<T>存储的对象有sort()方法
元素的访问:list对象[index]
删除元素:RemoveAt(int index)、 Remove(对象名)、清空list Clear()
Dictionary<k,v>
元素的访问:dictionary对象[key]
元素的属性:keys、values
检查集合中是否含有某key使用
元素的添加:对象.Add(string ,对象);
元素的删除:对象.Romove(key);
读写文件
引入命名空间:system.Io;
创建文件流
FileStream myfs=new FileStream (文件路径,要进行的操作fileMode.值,FileAccess.Writer)
创建读写器
StreamWriter mysw=new StreamWriter (文件流对象)
执行读写操作 读写器对象.读/写 方法
关闭读写器 读写器对象.Close();
关闭文件流 文件流对象.Close();
文件流:
FileMode枚举成员意义:
Create(用指定的名称新建一个文件,如果文件存在,则修改旧文件)
CreateNew(新建一个文件,如果存在,引发异常,提示文件已经存在)
Open(打开一个文件,指定文件必须存在,否则会发生异常)
OpenOrCreate(如果文件不存在,则用指定的名称新建一个文件并打开它)
Text文件的读写(不需要文件流)
创建读写器对象
StreamWriter/StreamReader 对象名
=new StreamWriter/StreamReader(路径);
读写操作 关闭读写器
文件和目录操作
File类(操作文件)
方法 |
说明 |
Exists(string path) |
用于检查指定文件是否存在,该方法返回一个布尔值 |
Copy(string sourcefilepath,string destinationfilepath) |
将指定路径的源文件的内容复制到目标文件中,如果目标文件不存在,则在指定路径中新建一个文件 |
Move(string sourcefilepath,string destinationfilepath) |
将指定文件移动到一个新的路径 |
Delete(string path) |
删除指定文件,如果指定的文件不存在,则不引发异常 |
Directory类(操作文件夹)
方法 |
说明 |
Exists(string path) |
用于检查指定文件夹在磁盘上是否存在 |
Move(string sourcedirname,string destdirname) |
用于将文件或目录及其内容移动到新位置 |
Delete(string ,bool) |
删除指定目录,如果bool值为true,则删除子目录中的所有目录内容 |
静态类和非静态类
静态类 |
非静态类 |
用static修饰 |
不用static修饰 |
只包含静态成员 |
可以包含静态成员 |
不可以包含实例成员 |
可以包含实例成员 |
使用类名调用静态成员 |
使用实例对象调用非静态成员 |
不能被实例 |
可以被实例 |
不能包含实例构造函数 |
包含实例构造函数 |
XML和TreeView
操作xml的对象属性和方法
对象 |
属性和方法 |
说明 |
xmlDocument |
DocumentElement属性 |
获取根节点 |
ChildNodes |
获取所有子节点 |
|
Load() |
读取整个xml的结构 |
|
xmlNode |
innerText属性 |
当前节点的值 |
Name |
当前节点的名字 |
|
ChildNodes |
当前节点的所有子节点 |
xmlDocument myxml=new xmlDocument ();
xml对象.load(xml文件路径);
xmlNode foot=xml对象.DocumentElement;//获取xml的根节点
TreeNode footNode=new TreeNode (xml根节点);//定义TreeNode
将xml的根节点的ChildNodes 循环添加到treeView
继承(子类拥有父类公有属性或方法的过程)
Base关键字用于调用父类的属性、方法、构造函数等
继承具有:传递性、单根性、相对性
结构、密封类(被sealed修饰的类)不能被继承
多态(不同对象对于同一方法作出的不同响应)
多态的实现有:方法重载、重写、虚方法
抽象类和抽象方法(相当于方法的定义)
抽象方法是一个未实现的方法
定义抽象方法的语法:
访问修饰符 abstract 返回类型 方法();
含有抽象方法的类为抽象类需在类名前加上abstract关键字
抽象类不能是密封或静态的
抽象类不可被实例化只能通过它的子类来实现该类的方法
Public new void test(){//方法体}//含new关键字的方法优先使用
抽象方法必须在子类中重写
抽象类对象只能由子类来创建
父类引用子类 指向对象
里氏替换原则: 子类对象可以赋给父类对象,父类不可替换子类对象
重写语法:访问修饰符 override 返回类型 方法();
Is操作符和as操作符:is用来判断类型,as用于类型转换
虚方法(相当于默认方法)
语法:访问修饰符 virtual 返回值类型 方法(){//方法体}
虚方法可在子类中重写
虚方法和抽象方法区别
虚方法 |
抽象方法 |
用virtual修饰 |
用abstract修饰 |
要有方法体,哪怕是个分号 |
不可有方法体 |
可以被子类override |
必须被子类override |
除了密封类外都可以写 |
只能在抽象类中 |
简单工厂设计模式
根据参数不同,创建不同的产品
接口(用来规范类,对于继承单根性的延伸)
定义:
访问修饰符 interface 接口名{ 各种成员的声明 }
Icomparable接口的int compareTo(obj value)方法用来比较当前实例与另一个对象的大小
Public int compareto(student other)
{
Return this.name.compareto(other.name);
}
泛型接口Icomparer<T> 的int Compare(T x,T y)方法用于比较两个对象的大小
public int(student x,student y)
{ return (x.age.compareto(y.age))}
方法若返回值<0 :则当前实例小于obj >0则当前实例大于obj =0 则等于obj
接口作为参数的意义:传入实现了接口的对象
接口作为返回值的意义:返回实现了接口的对象
用实现类创建接口的引用 接口成员默认访问修饰符public
序列化(将对象的状态存储到特定存储介质中的过程)和反序列化(将对象从存储介质中还原出来)
特性:其实是一个类,它的主要功能是对程序集中的元素,如类、字段、方法、属性添加描述性的信息
在类名前添加标记[Serializable]标明类是否可以序列化
序列化是将对象的状态存储到特定存储介质的过程
引入命名空间runtime.serialization.Formatters.Binary;
二进制格式化器binaryFormatter
将特定对象序列化到特定文件中
语法:public void serializa(Stream seralizetionStream,object graph)
反序列化将对象从文件中还原
语法:public object deserialize(文件流对象)
程序集和反射:
编译好的.exe 文件称为 程序集,程序集时。Net框架应用程序的生成块,它包含编译好的代码逻辑单元
程序集的结构:
程序集清单 |
类型元数据 |
IL代码 |
资源 |
(1) 程序集清单主要功能:列举构成该程序集的文件
(2) 元数据:一种二进制信息,
(3) MSIL 是微软中间代码,它时实现类型元数据的中间代码,二资源就是我们程序中的图片。音乐文件等
程序集能查看项目结构
反射(可以利用反射在运行时创建类型实例,以及调用和访问这些实例)可以获得已加载的程序集和在其中定义的类型的信息
4种访问修饰符
|
类内部 |
同一程序集的派生类 |
同一程序集的其他类 |
不同程序集的派生来 |
不同程序集的其它类 |
Private |
可以 |
不可以 |
不可以 |
不可以 |
不可以 |
Protected |
可以 |
可以 |
不可以 |
可以 |
不可以 |
Internal |
可以 |
可以 |
可以 |
不可以 |
不可以 |
Public |
可以 |
可以 |
可以 |
可以 |
可以 |
相关文章
- 暂无相关文章
用户点评