06.05 「javaSE基础」2018面试-IO试题集-字节流和字符流区别,序列化

「javaSE基础」2018面试-IO试题集-字节流和字符流区别,序列化

字符流图

「javaSE基础」2018面试-IO试题集-字节流和字符流区别,序列化

字节流图

1、字节流和字符流的区别?

字节流读取数据时,读到一个字节就返回一个字节;字符流使用了字节流读到一个或多个字节(中文对应的字节数是2个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。字节流可以处理所有类型的数据,如图片、MP3、视频等文件,而字符流只能处理字符数据。只要是纯文本数据,就要优先考虑字符流,除此之外都用字节流。字节流主要处理byte数据类型,以byte数组为准,主要的操作类有OutputStream和InputStream。

字符流处理的单元为2个字节的Uncode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。所以字符流是由java虚拟机将字节转换为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频、图片、视频等文件则用字节流,如果关系到中文(文本)的,则用字符流较好。在程序中一个字符等于两个字节,java提供了Reader和Writer两个类专门操作字符流。

2、什么是java序列化?如何实现java序列化?

序列化就是一种用于处理对象流的机制,所谓的对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可以对流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时引发的问题。

序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implement Serializable只是为了标注该对象可以被序列化,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则使用输入流。

「javaSE基础」2018面试-IO试题集-字节流和字符流区别,序列化


分享到:


相關文章: