# neuedu20190222java **Repository Path**: juejiangfeitie/neuedu20190222java ## Basic Information - **Project Name**: neuedu20190222java - **Description**: IO文件流、包装类 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-02-22 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # neuedu20190222java #### 介绍 IO文件流、包装类 #### 软件架构 软件架构说明 #### IO流 1. IO工具类 (1)字节流 (2)字符流 字符流的构造方法中,可以指定编码格式; 字符流可以将字节流转化为指定格式的字符流; 具有将字节流转为字符流的功能; BufferedReader和BufferedWriter用法(写出内容末尾没有换行符) PrintWrite用法 (3)对象流 对象流是将内存中的存储的对象实例的内容以流的形式,写出到外部文件中; 也就是在内存中new创建了一个对象,然后把当前时间节点的对象的内容写出到文件中; 对象流保存是对象在某个时间节点的状态下的内容; 对象流要求写出的对象实现Serializable接口; 而且对象流写出的文件是二进制流文件; 对象输出流写出的文件只能对象输入流来进行读取和恢复; 对象输入流只能读取对象输出流写出的文件内容; 总结: (1)对象输入流读取对象输出流进行了反序列化处理之后, 在内存中又重新创建了一个新的对象实例; 对象输入流创建的对象和对象输出流写出之前的内存中的对象不是同一个对象的应用;(==运算为false) (2)Java基础中,用于创建新的对象实例的方法: 使用new创建; 使用对象输入流通过反序列化创建; 通过反射创建; (4)序列化与反序列化 序列化:对象的状态信息转化为可以存储或传输的形式的过程,以保证在传输过程中不会乱序; 并且可以通过反序列化的过程进行信息恢复; 对象输出流是序列化的过程; 反序列化:序列化的逆操作; 对象输入流是反序列化的过程; 一般通过IO进行持久化、网络传输对象,都需要进行序列化与反序列化; java中要求进行序列化和反序列化的类必须实现Serializable接口; (5)transient关键字 作用:用于修饰对象的成员变量,控制该变量是否参与序列化与反序列化; Transient关键字的作用是控制变量的序列化,在变量声明前加上该关键字, 可以阻止该变量被序列化到文件中, 在被反序列化后,transient变量的值被设为初始默认值,如int型的是0,对象型的是null 2. 包装类 (1)包装类 包装类是用来对8种基本数据类型的面向对象的封装; 使8种基本数据类型具有了面向对象的行为能力; 基本数据类型:byte short int long float double char boolean 包装类: Byte Short Integer Long Float Double Character Boolean 所有的包装类的默认值都是null; (2)拆箱与装箱 装箱:将基本类型转为为包装类类型的过程;(默认转换) 拆箱:将包装类型转化为基本类型。(方法) 包装类优点: 可以将8种基本类型使用包装类形式,将其纳入面向对象的体系; 例如:集合中只能存放对象类型;Synchronized关键字只能使用对象类型; (3)基本类型、包装类型、String类型之间的相互转化关系 基本类型--->包装类类型: 默认转换; 通过构造方法; 包装类类型--->基本类型: xxxValue()方法 (包装类类型的静态方法); 默认转换; 包装类类型--->String toString方法; ""+包装类变量; String--->包装类类型: 通过构造函数; valueOf函数(包装类类型的静态方法); 基本类型--->String ""+基本类型变量; String--->基本类型: parsexxx()方法 (包装类类型的静态方法); 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)