一、缓冲流
给读写操作添加一个缓冲区,提高读取的效率
1、字节缓冲流
a、输出流:BufferedOutputStream
使用:new BufferedOutputStream(FileOutputStream file):创建对象通过构造方法传递一个字节输出流来进行初始化
b、输入流:BufferedInputStream
使用:new BufferedInputStream(FileInputStream file)
2、字符缓冲流
a、输出流:BufferedWriter
使用:new BufferedWriter(FileWriter file)
特有方法:newLine():写入一个行分隔符,表示重起一行
b、输入流:BufferedReader
使用:new BuffereedReader(FileReader file)
特有方法:readLine():读取一个文本行
3、为什么缓冲流的效率高?
缓冲流默认会创建一个字节存储空间,每次读取文件时,会读取该空间大小的字节数。大大地降低了IO次数,提高了文件读取效率
二、序列化流
1、序列化流:ObjectOutputStream类
使用:new ObjectOutputStream(FileOutputStream file);
序列化:将对象写到指定的文件中存储
2、 反序列化流:ObjectInputStream类
使用:new ObjectInputStream(FileInputStream file);
反序列化:将对象从文件中取出来
注:(1)要进行序列化的对象所述的类,实现序列化接口(Serializable)
(2)实现了Serializable接口后,在对象进行序列化时,会默认提供一个serialVersionUID,此时序列化到文件对象会携带这个ID。如果去改变了类的属性,此时类会重新编译,会提供一个新的serialVersionUID,这时再去反序列化时,导致ID不同,无法反序列化。
解决:不让序列化提供此ID,自定义一个不可变的serialVersionUID,此时无论怎么改变类的属性,ID都不变。如:public static final int serialVersionUID = 100;
三、打印流
在整个 IO 包中,打印流是输出信息最方便的类,主要包含字节打印流(PrintStream) 和字符打印流(PrintWriter) . 打印流提供了非常方便的打印功能,可以打印任何的数据类型,例如: 小数、整数、字符串等等。
四、反射
JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于 任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为 java语言的反射机制。
1、概述
编译时期:java--->.class文件
运行时期:将.class文件加载到内存,jvm去调用执行
反射:我们想获取到不同时期类里的属性,可以通过new对象的方式获取类中属性。我也可以通过反射动态获取到类中的属性。
在java中通过Class字节码类将类中的属性封装(将类中的成员变量,构造方法,成员方法进行封装),此时只有创建该类的 Class字节码对象就可以获取到类中的属性
2、Class类中的属性
Fields[] f:用于存储类的成员变量
Constructors[] c:用于存储类的构造方法
Method[] m:用于存储类的成员方法
3、创建Class字节码对象三种方式
a、Class.forName("类的全路径")
b、类名.class
c、对象.getClass();不建议
4、创建类对象
newInstance():
5、获取类的成员属性的方法
Field[] getFields():获取所有public修饰的成员变量
Field getField(String name):获取指定名称的public修饰的成员变量
Field[] getDeclareFields():获取所有的成员变量,不考虑修饰符
Field getDeclaredField(String name):获取指定名称的任何类型的成员变量
6、获取类中的构造方法
Constructor[] getConstructors():获取所有public修饰的构造方法
Constructor getConstructor(类...paramterTypes):获取public修饰的公共有参构造方法
ConstructorsgetDeclaredConstructor(类...parameterTypes):获取任何类型的公共有参构造方法
Constructors[] getDeclaredConstructors():获取所有的构造方法
7、获取类中成员方法
Method[] getMethods():获取所有public修饰的成员方法
Method getMethod(String name,类...paremterTypes):获取指定名称的public修饰的成员方法
Method[] getDeclareMethods():获取所有任何类型的成员方法
Method getDeclaredMethods(String name,类...parameterTypers):获取指定名称的任何类型的成员方法
8、框架创对象的简易方式
a、在配置文件中指定你要创建哪个类的对象的路径
b、通过流的方式解析配置文件拿到指定的类的路径
c、通过反射Class.forName(类路径)创建对象
五、枚举类
所创建对象个数是有限制的类,称之为枚举类
例如:Gender类,Season类,Week类等
1、jdk1.5之前枚举类的写法
2、jdk1.5后对于枚举类的定义:使用enum关键字创建类