• IO


    输入流:是数据源到程序的过程

    输出流:程序到数据源的过程

    (1)字节流和字符流的区别?

           字节流是将数据解析成原始的二进制数据,与主机的编码方式无关,可移植性高,二进制数据不需要编码解码的过程,效率高;字符流是将数据解释成字符的序列,文件数据存储依赖文件的编码方式,并且输入输出都是需要编码和解码的,效率低,可移植性低。

    (2)JavaIO常见的类,字节流,字符流的具体实现类与阻塞的方法?

           字节流中有抽象类InputStream和OutputStream,它们的子类FileInputStream,FileOutputStream,字节缓冲输出流BufferedOutputStream(BufferedOutputStream不是OutputStream的直接实现子类,是FilterOutputStream的子类),字节缓冲区输入流BufferedInputStream(BufferedInputStream不是InputStream的直接实现子类,是FilterInputStream的子类),缓冲区通常都是8KB;字符流的类通常以reader和writer结尾,常见字符输入流Reader,InputStreamReader,FileReader,BufferedReader,调用read()方法会返回一个int类型,如果么有数据会返回-1。常见字符输出流:Writer,OutputStreamWriter,FileWriter,BufferedWriter。

    java中的阻塞式方法是指在程序调用改方法时,必须等待输入数据可用或者检测到输入结束或者抛出异常,否则程序会一直停留在该语句上,不会执行下面的语句。比如read()和readLine()方法。

    (3)序列化?

             序列化:是将类的对象转化为字节流保存到磁盘中

             反序列化:从字节流恢复到类对象

             序列化的目的:对象序列化机制把内存中对象转化为与平台无关的二进制流,并且可以持久化的保存在磁盘中,使得Java对象的持久化保存;或者允许在网络中直接传输序列化的对象,一旦另一个网络节点获取到这种二进制流,都可以将其恢复成java对象,使得对象可以脱离程序独立存在。

    (4)序列化如何实现?

    1. 实现java.io.Serializable接口,标记当前的类是可序列化的,(标记接口不包含任何的方法和字段,只是用于标记),使用Serializable接口去实现序列化,会产生一个序列化ID,这是一个标识符号,它通常使用对象哈希序列化标记在对象上,可以使用序列化ID对对象实现版本控制。
    2. 创建一个ObjectOutputStream对象
    3. 通过ObjectOutputStream对象的writeObject方法输出可序列化的对象

    (5)反序列化的步骤

    1. 创建一个ObjectInputStream对象
    2. 通过ObjectInputStream对象的readObject方法读取流中的对象,将其反序列化为真实的

          

  • 相关阅读:
    laravel-excel maatwebsite/excel 新版中文文档
    laravel-excel.com官网英文站
    composer查看镜像地址
    Navicat Premium 通过ssh 连接服务器
    Centos7 yum 出现could not retrieve mirrorlist 最终解决方案
    php 获取随机字符串算法
    apache 配置多域名访问的方法
    laravel 配置多域名最简单的方法
    es6知识点
    如何判断浏览器为ie10以上
  • 原文地址:https://www.cnblogs.com/128-cdy/p/13511136.html
Copyright © 2020-2023  润新知