学习Java第十五天

一、缓冲流

给读写操作添加一个缓冲区,提高读取的效率

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关键字创建类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值