学习主题:容器遍历以及IO流
学习目标:
1 掌握容器的遍历
2 掌握IO流的基本概念,结构,以及文件字节流
1.迭代器_遍历List_Set
(1)迭代器的由来是什么?
Iterator是一个接口,因为list和set的数据结构不同,使用迭代器的话就不用考虑数据结构,拿到这个对象就可以遍历这个对象的内部。Iterator接口有三个方法:next();hasNext();remove();
(2)使用迭代器遍历集合的原理是什么?
在容器中获取迭代器。使用循环判断下一个元素是否存在。如果下一个元素存在就获取,没有就结束循环。
2.迭代器_遍历Map
(1)ListIterator接口比Iterator扩展的哪些方法?
ListIterator接口是Iterator接口的扩展,可以用于解决并发修改异常
hasPrevious();判断是否有前一个
previous();获取前一个元素
nextIndex();获取下一个索引
previousIndex();获取前一个索引
set(E e);
add(E e);添加一个元素。
(2)并发修改异常是如何产生的?
在使用迭代器遍历集合时,又使用集合对象进行添加元素。
3.容器体系框架总结
(1)画出集合体系框架图?
(2)集合和数组的异同点?
1、数组声明了它容纳的元素的类型,而集合不声明。
2、数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合是可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。
3、数组是一组具有相同类型的数据的集合
4.IO流的基本概念
(1)简述IO流的原理?
1、在java程序中,对于数据的输入/输出操作以“流”方式进行
2、J2SDK提供了各种各样的“流”类,用以获取不同种类的数据,程序中通过标准的方法输入或输出数据
3、Java的流类型一般位于java.io包中
(2)Java中关于IO流的定义 ?
java的io是实现输入和输出的基础,可以方便的实现数据的输入和输出操作。在java中把不同的输入/输出源(键盘,文件,网络连接等)抽象表述为“流”(stream)。通过流的形式允许java程序使用相同的方式来访问不同的输入/输出源。stram是从起源(source)到接收的(sink)的有序数据。
5.流的细分和体系_四大抽象类
(1)IO流可以分为哪几类?
根据流的方向:输入流,输出流
根据处理数据单元:字节流,字符流
根据功能:字节流,处理流
(2)流的四大抽象类分别是什么?
InputStream , OutputStream , Reader , Writer
6.文件字节流
(1)FileInputStream的常用方法有哪些?
1、abstract int read()
2、int read(byte b[])
3、int read(byte b[],int off,int len)
4、int available()
5、Close()
(2)FileOutputStream的常用方法有哪些?
1、abstract void write(int b)
2、void write(byte b[])
3、void write(byte b[] , int off , int len )
4、void flush()
5、void close()
7.使用字节流实现文件复制
(1)简述使用字节流实现文件复制的原理?
(2)简述使用字节流实现文件复制的步骤?
public static void main(String[] args) {
//数据源
FileInputStream fis=null;
//目的地
FileOutputStream fos=null;
try {
fis = new FileInputStream(“E:\test.txt”);
fos = new FileOutputStream(“D:\test2.txt”);
//存储读取到的字节
byte[] buf=new byte[1024];
int len=0;
while((len=fis.read(buf))!=-1){
fos.write(buf,0,len);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//关闭
if(fis!=null){
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
学习主题: IO流
学习目标:
8.文件字符流
(1)Reader常用的方法有哪些?
1、int read()
2、Int read(char[]cbuf,int off,int len)
3、Int read(char[]cbuf)
4、Int available()
5、Close()
(2)Writer常用的方法有哪些?
1、void write(int c)
2、void write(char[]cbuf)
3、abstract void write(char[]cbuf,int off,int len)
4、void write(String str)
5、abstract void flush()
9.缓冲字节流_缓冲字符流
(1)缓冲字节流的特点是什么?
提高读写文件效率
(2)简述使用缓冲字节流进行文件复制时提高效率的原理是什么?
提高效率的原理:读文件和写文件都使用了缓冲区,减少了读写次数,从而提高了效率;当创建者两个缓冲流的对象时,会创建内部缓冲数组,缺省使用32字节大小的缓冲区;当读取数据时,数据按块读入缓冲区,其后的读操作则直接访问缓冲区;当写入数据时,首先写入缓冲区,当缓冲区满时,其中的数据写入所连接的输入流。使用方法flush()可以强制将缓冲区的内容全部写入输入流;关闭流的顺序和打开顺序相反,只要关闭高层流即可
10.转换流
(1)InputStreamReader的作用是什么?
把InputStream转换成Reader
(2)OutputStreamWriter的作用是什么?
把OutputStream转化成Writer
11.打印流
(1)简述PrintStream的特点?
提供了一系列的print()和println(),可以实现将基本数据类型转换成字符串格式化输出,对于对象类型的话就先调用toString()方法,然后输出该方法返回的字符串
(2)简述PrintWriter与PrintStream的区别?
PrintStream的输出功能非常强大,通常需要输出文本内容,都可以将输出流包装成PrintStream后进行输出; PrintWriter:使用字符流的时候需要手动刷新,关闭
System.out和System.err都是PrintStream的实例,代表显示器;PrintStream的方法都不抛出IOException
12.数据流
(1)数据流的作用是什么?
提供了可以存取所有java类型的数据的方法
(2)你学过的流中哪些是处理流?
字节流,二进制文件