华清远见重庆中心—Java高级阶段/个人总结

一.数组和集合的特点

1.数组的特点:

数组中保存的元素都是有序的,可以通过索引快速访问 数组中保存的元素都是同一种类型 数组的长度在定义后,无法改变 数组无法获取其中保存的元素实际数量 2.集合的特点;

能保存一组数据,元素可以有序或无序(存入的顺序和读取的顺序不一致) 集合中保存的元素的数据类型可以不同 集合的容量可变 可以获取集合中保存的元素实际数量 二.集合家族

  1. Collection接口

(1)List接口(有序可重复) 有序集合,元素可以重复,允许保存Null,可以通过索引获取对应的元素。 List接口在继承Colletion接口后,又拓展了一些操作元素的方法。

(2)ArrayList实现类 采用数组实现的集合 可以通过索引访问元素,可以改变集合大小,如果要在其中插入或删除元素时,会影响后续元素 该集合查询效率高,中途添加和删除元素效率低 集合中保存的都是引用类型。如集合中保存123,保存的不是int类型的123,而是Integer类型的 123

(3)LinkedList实现类 采用双向链表实现的集合 集合中保存的每个元素称为节点,除首尾节点外,其他节点既保存了自己的数据,还保存了其前后 节点的地址 如果在双向链表的结构中进行插入和删除节点的操作时,不会影响其他节点现在的保存位置。 添加的节点只需记录前后节点的位置接口。 如果要查询某个节点的地址时,需要从头结点或尾节点开始搜索目标节点的位置 双向链表在中间插入和删除数据效率高,随机读取的效率低

三.如何遍历集合

四种方法:1.普通for循环2.增强for循环3.forEach()方法4.迭代器

四.文件类

1.构造方法:

File(String pathName) 根据文件的完整路径创建File对象 File(String parent,String child) 根据文件的父目录的路径和自身的名称创建File对象 File(File parent,String child) 根据文件的父目录对应的File对象和自身的名称创建File对象

IO:指input输入流和output输出流

流Stream:在Java中,流表示计算机硬盘与内存之间传输数据的通道 将内存中的数据存入到硬盘中,称为写write,也称为输出Output 将硬盘中的数据存入到内存中,称为读read,也称为输入Input

流的分类: Java中的流也是类,以对象的实现表示流。流有"四大家族",是所有流的父类。 字节输入流InputStream FileInputStream、ObjectInputStream 字节输出流OutputStream FileOutputStream、ObjectOutputStream 字符输入流Reader FileReader、BufferedReader、InputStreamReader 字符输出流Writer FileWriter、BufferedWriter、OutputStreamWriter

流的四个父类特点: 这四个父类都是在java.io包下,都是抽象类,不能直接创建其对象,使用其子类对象 这四个类都有close()方法,用于关闭流对象,释放资源 输入流(InputStream和Reader)都有read()方法,用于读取数据,输出流(OutputStream和Writer) 都有write()方法 输出流(OutputStream和Writer)都有flush()方法,用于将流中的数据冲刷到硬盘中 在使用输出流对象时,一定要调用flush()或close()方法后,才能真正将数据写入到硬盘中 所有流中,以Stream结尾,都是字节流,数据以字节传输;以Reader或Writer结尾,都是字符 流,数据以字符传输 常用构造方法 作用 FileInputStream(String filePath) 根据文件完整路径创建流对象 FileInputStream(File file) 根据文件对象创建流对象 常用方法 作用 read() 读取一个字节,返回读取到的字节 read(byte[] bytes) 读取指定数组大小的字节,返回读取到的字节数量 read(byte[] bytes,int off,int len) 读取指定数组大小的字节,从off索引开始读取len个字节,返回读 取到的字节数量 available() 文件可读取的最大字节数量 close() 关闭流对象 常用构造方法 说明 FileOutputStream(String filePath) 根据文件名创建流对象,覆盖写入 FileOutputStream(String filePath,boolean appen) 根据文件名创建流对象,追加写入 FileOutputStream(File file) 根据文件对象创建流对象,覆盖写入 FileOutputStream(File file,boolean appen) 根据文件对象创建流对象,追加写入 读取硬盘中的数据时,读取的文件必须存在;写入数据到硬盘中时,写入的文件可以不存在,但父 目录必须存在。

FileInputStream文件字节输入流 :

常用构造方法:

FileInputStream(String filePath) 根据文件完整路径创建流对象 FileInputStream(File file) 根据文件对象创建流对象

常用方法:

read() 读取一个字节,返回读取到的字节 read(byte[] bytes) 读取指定数组大小的字节,返回读取到的字节数量 read(byte[] bytes,int off,int len) 读取指定数组大小的字节,从off索引开始读取len个字节,返回读 取到的字节数量 available() 文件可读取的最大字节数量 close() 关闭流对象

FileOutputStream文件字节输出流 :

FileOutputStream(String filePath) 根据文件名创建流对象,覆盖写入 FileOutputStream(String filePath,boolean appen) 根据文件名创建流对象,追加写入 FileOutputStream(File file) 根据文件对象创建流对象,覆盖写入 FileOutputStream(File file,boolean appen) 根据文件对象创建流对象,追加写入

使用FileInputStream和FileOutputStream读写时的注意 事项 在通过FileInputStream对象使用read(byte[] bytes)方法时,每次读取指定数组的字节,将读取到 的字节保存在字节数组中。 该方法的返回值是读取到的字节数量,如果最后一次读取的字节数量不足字节数组的大小时,只会 将读取到的内容覆盖数组中最前的几个元素。 所以最后一次读取时,读取的内容多于实际内容。 在通过FileOutputStream对象使用write(byte[] bytes),会将字节数组中的所有内容写入到输出流 中,在最后一次写入时,会写入多余的内容。 所以在写入时,使用write(byte[] bytes,int off,int len)方法,表示将字节数组中的内容,从off开始 写入len个

FileReader文件字符输入流 :

FileReader(String fileName) 根据文件名创建文件字符输入流对象 FileReader(File file) 根据文件对象创建文件字符输入流对象

常用方法 :

ready() 判断是否还有下一个字符 read() 读取下一个字符,返回读取到的字符 read(char[] chars) 按字符数组读取,返回读取到的字符数量,读取到的字符保存在字符数组 中 close() 关闭流对象

BufferedReader缓冲字符输入流:

构造方法 :BufferedReader(Reader in) 创建一个带有缓冲区(大小为8192的char数组)的字符输入流对象, 参数为Reader类型对象,Reader是抽象类,所以实际参数为 Reader的子类,如FileReader,在FileReader对象中定义要读取的 文件 BufferedReader(Reader in,int size) 创建一个指定缓冲区(字符数组)大小的字符输入流对象

常用方法 :ready() 判断是否还有字符 readLine() 读取整行字符 close() 关闭流对象

序列化ObjectOutputStream对象字节输出 流 序列化:将对象转换为文件的过程 被序列化的对象,其类必须要实现Serializable接口 这个接口是一个特殊的接口,其中没有定义任何方法,只是给类加上标记,表示该类可以被序列化

构造方法:ObjectOutputStream(OutputStream os) 根据字节输出流对象创建

常用方法 :writeObject(Object obj) 将一个对象写入到本地文件 flush() 冲刷数据到硬盘 close() 关闭流对象

反序列化ObjectInputStream对象字节输入 流:

ObjectInputStream(InputStream is) 根据字节输入流对象创建

常用方法 :readObject() 读取序列化后的文件,返回Object类型 close() 关闭流对象

五.序列化和反序列化案例

InputStreamReader 属于转换流(将字节流转换为字符流) OutputStreamWriter 属于转换流(将字节流转换为字符流) 案例参考网络编程套接字通信

个人体会:上一阶段的JAVA高级,相较于之前难度有明显的上升,更复杂的代码,更繁琐的流程,更绕的逻辑思维。难度直线上升,但我相信有志者,事竟成。刻苦的学习终于会迎来丰厚的回报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值