参考答案
基础流可以分为:字节流,字符流。字节流继承于 InputStream、OutputStream 抽象类,字符流继承于 Reader 和 Writer 抽象类。在 java.io 包中还有许多其他的流,如对象流,数据流等都是基于这两种基础流扩展实现的。
参考答案
1、每次读写的字节数不同。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。 2、字符流是块读写,字节流是字节读写。字符流和字节流,一个属性范围小,一个属性范围大,字符流只能是字符这一种类型,但是字节流中可以是字符,可以是二进制文件,可以是音频,可以是各种各样的类型,只要符合字节形式存储的都可以接字节流,而字符流只能接字符。 3、字符流带有缓存,字节流没有。
参考答案
序列化就是一种用来处理对象流的机制,将对象的内容进行流化。可以对流化后的对象进行读写操作,可以将流化后的对象传输于网络之间。序列化是为了解决在对象流读写操作时所引发的问题。 序列化的实现:将需要被序列化的类实现 Serialize 接口,没有需要实现的方法,此接口只是为了标注对象可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream(对象流) 对象,再使用 ObjectOutputStream 对象的 write(Object obj) 方法就可以将参数 obj 的对象写出。
参考答案
缓冲区就是一段特殊的内存区域,很多情况下当程序需要频繁地操作一个资源(如文件或数据库)则性能会很低,所以为了提升性能就可以将一部分数据暂时读写到缓存区,以后直接从此区域中读写数据即可,这样就显著提升了性。 对于 Java 字符流的操作都是在缓冲区操作的,所以如果我们想在字符流操作中主动将缓冲区刷新到文件则可以使用 flush() 方法操作。
参考答案
属于处理流中的缓冲流,可以将读取的内容存在内存里面,有 readLine() 方法用来读取一行字符串。
参考答案
流一旦打开就必须关闭,可以使用 close 方法将其关闭。一般关闭流的操作都放入 finally 语句块中以保证该操作一定会执行。若是多个流互相调用,那么只关闭最外层的流即可。
参考答案
可以从两个方面来解释,一方面是为了方便数据存储,另一方面是为了方便数据的传递。序列化就是将一对象 (标志对象的类型) 及其状态转换为字节码,保存起来(可以保存在数据库,内存,文件等), 然后可以在适当的时候再将其状态恢复 (也就是反序列化)
参考答案
Java 中未直接或间接实现序列化接口的类和属性不能被序列化,被 static,transient 修饰的属性不会被序列化。
参考答案
Java 的序列化机制是通过在运行时判断类的 serialVersionUID 来验证版本一致性的。在进行反序列化时,JVM 会把传来的字节流中的 serialVersionUID 与本地实体类中的 serialVersionUID 进行比较,如果相同则认为是一致的,便可以进行反序列化,否则就会报序列化版本不一致的异常。
参考答案
transient 关键字阻止该变量被序列化。