1. Java 中有几种类型的流?【重点】
按照流的方向:
输入流(InputStream);
输出流(OutputStream)。
按照实现功能,是否直接与特定的地方(如磁盘、内存、设备等)相连:
节点流:可以从或向一个特定的地方(节点)读写数据,如FileReader;
处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
按照处理数据的单位:
字节流:字节流继承于InputStream和OutputStream;
字符流:字符流继承于Reader和Writer。
2. 如何实现对象克隆?【了解】
两种方式:
实现Cloneable接口并重写Object 类中的clone()方法;
实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。
3. 什么是缓冲区?有什么作用?【掌握】
缓冲区就是一段特殊的内存区域,很多情况下当程序需要频繁地操作一个资源(如文件或数据库)则性能会很低,所以为了提升性能就可以将一部分数据暂时读写到缓存区,以后直接从此区域中读写数据即可,这样就可以显著的提升性能。
对于Java字符流的操作都是在缓冲区操作的,所以如果我们想在字符流操作中主动将缓冲区刷新到文件则需要使用flush()方法实现。
4. Java中有哪些可用的Filter流?【了解】
在IO包中主要由4个可用的Filter流,分别为:
FilterInputStream:是InputStream直接子类,包含其他一些字节输入流,它将这些流用作其基本数据源,本身只是简单地重写那些将所有请求传递给所包含输入流的InputStream的所有方法。
FilterOutputStream:是OutputStream直接子类,包含其他一些字节输出流,它将这些流用作其基本数据源,类本身只是简单地重写那些将所有请求传递给所包含输入流的OutputStream的所有方法。
FilterReader:是Re