IO流相关知识
1. 迭代器_遍历List_Set
(1) 迭代器的由来是什么?
迭代器是为容器而生,它本质上就是一种遍历的算法。因为容器的实现千差万别,很多时候不可能知道如何去遍历一个集合对象的元素。Java为我们提供了使用迭代的接口,Java的所有集合类丢失进行迭代的。
(2) 使用迭代器遍历集合的原理是什么?
创建一个指针对象,指向当前数据结构的起始位置。(遍历器的本质就是一个指针对象)
第一次调用指针对象的next方法,可以将指针指向数据结构的第一个成员
第二次调用指针对象的next方法,指针就指向数据结构的第二个成员
不断调用指针对象的next方法,直到它指向数据结构的结束位置
2. 迭代器_遍历Map
(1) ListIterator接口比Iterator扩展的哪些方法?
add()方法
Set方法
Remove()方法
Previous()方法
(2) 并发修改异常是如何产生的?
并发修改异常
A:出现的现象
迭代器遍历集合,集合修改集合元素
B:原因
迭代器是依赖于集合的,而集合的改变迭代器并不知道。
3. 容器体系框架总结
(1) 画出集合体系框架图?
(2) 集合和数组的异同点?
一、数组声明了它容纳的元素的类型,而集合不声明。
二、数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合是可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。
三、数组不论是效率还是类型检查都是最好的。
1.数组是大小固定的,一旦创建无法扩容;集合大小不固定,
2.数组的存放的类型只能是一种,集合存放的类型可以不是一种(不加泛型时添加的类型是Object);
3.数组是java语言中内置的数据类型,是线性排列的,执行效率或者类型检查(不懂),都是最快的.ArrayList就是基于数组创建的容器类.
4. IO流的基本概念
(1) 简述IO流的原理?
(2) Java中关于IO流的定义 ?
流:数据传输的通道。流的分类: 按传输的类型:字符流和字节流 按流向:输入流和输出流。 字节流:inputstream outputstream 字符流:reader writer 缓冲流:buffered+流 打印流:printStream printWriter 转换流:inputstreamReaderoutputstreamWriter 区别:至于outputstream在执行write时不需要刷新缓冲,其他的输出流都需要执行一个刷新缓冲区的操作。 byte[] char[] datainputstream和dataoutputstream可以写java的基本数据类型。 如果要写一个对象的所以的属性值,如果属性值很多实用data数据流很麻烦,而且有些属性(引用类型)就无法处理
5. 流的细分和体系_四大抽象类
(1) IO流可以分为哪几类?
按流向分(站在程序角度考虑)
输入流(input)
输出流(output)
按类型分:
字节流(InputStream/OutputStream)
任何文件都可以通过字节流进行传输。
字符流(Reader/Writer)
非纯文本文件,不能用字符流,会导致文件格式破坏,不能正常执行。
节点流(低级流:直接跟输入输出源对接) FileInputStream/FileOutputStream/FileReader/FileWriter/PrintStream/PrintWriter.
处理流(高级流:建立在低级流的基础上)
转换流:InputStreamReader/OutputStreamWriter,字节流转字符流/字符流转字节流
缓冲流:BufferedInputStream/BufferedOutputStream BufferedReader/BufferedReader可对节点流经行包装,使读写更快
(2) 流的四大抽象类分别是什么?
1) InputStream 和 OutputStream
Java 语言中最基本的两个字节输入输出类。
其他所有字节输入输出流类都继承自这两个基类。
这两个类都是抽象类,不能创建它们的实例,只能使用它们
的子类.
2) Reader 和 Writer
Java 语言中最基本的两个字符输入输出类。
其他所有字符输入输出流类都继承自这两个基类。
这两个类都是抽象类,不能创建它们的实例,只能使用它们
的子类.
6. 文件字节流
(1) FileInputStream的常用方法有哪些?
Read()方法,读一个字节。
Read(byte[])方法,将字符读到一个字节数组
Available()方法,文件中可用的对象
(2) FileOutputStream的常用方法有哪些?
Write(int)方法,写
Write(byte[])方法,将一个字节数组写到指定数据源
Close()方法,
7. 使用字节流实现文件复制
(1) 简述使用字节流实现文件复制的原理?
(2) 简述使用字节流实现文件复制的步骤?
1. 搭建程序和数据源之间的桥梁,利用FileOutputStream类中的write方法,将字节写到指定数据源,然后关闭资源
2. 搭建桥梁数据源与程序之间的联系,利用FileInputStrream类中read方法,将字节文件读到程序中。
分享/讲解/扩展思考
扩展作业:HashMap,HashSet的所有遍历方式都敲一遍,统计一下HashMap和HashSet有多少种遍历方式(百度查询)
点名提问从第一节课到最后一节课分别学到了什么,直到同学们把所有的知识点都说出来并且保证无误。
第28次(IO流)
学习主题: IO流
学习目标:
1 掌握不同类型流的使用
对应视频:
http://www.itbaizhan.cn/course/id/85.html
对应文档:
无
对应作业
8. 文件字符流
(1) Reader常用的方法有哪些?
Read()读取单个字符。
Read(char[] buf)将字符读到一个数组中
(2) Writer常用的方法有哪些?
Flush()冲流
Write(char[] buf)写一个字符数组
Write(int c)写一个字符
Write(String str)写一个字符串
9. 缓冲字节流_缓冲字符流
(1) 缓冲字节流的特点是什么?
提高程序对文件读取效率
(2) 简述使用缓冲字节流进行文件复制时提高效率的原理是什么?
Bufferedinputstream,将数据源读取到缓冲区中,创建一个8192的byte类型的数组
Bufferedoutputstream,同理,当中转到读取数据源时,直接从缓冲区中读和写
10. 转换流
(1) InputStreamReader的作用是什么?
将字节数据类型转换成字符类型
(2) OutputStreamWriter的作用是什么?
将字符类型转换成字节类型
11. 打印流
(1) 简述PrintStream的特点?
是fileoutputstream的子类,不抛出异常,将基本数据类型初始化后,转换成字符串保存在数据源中。对象数据类型,调用tostring方法转换成字符串
(2) 简述PrintWriter与PrintStream的区别?
一个输出字节流,一个是输出字符流。
PrintStream:需要刷新缓冲区
12. 数据流
(1) 数据流的作用是什么?
将基本数据 类型和String类型原封不动的保存在数据源中取出来也是本身的数据类型
(2) 你学过的流中哪些是处理流?
缓冲流,数据流。转换流
���{�s