黑马程序员技术交流社区
标题:
递归
[打印本页]
作者:
111111111111
时间:
2016-6-3 15:22
标题:
递归
递归(理解)
(1)方法定义中调用方法本身的现象。
(2)递归注意事项:
A:要有出口,否则就是死递归。
B:次数不能太多,否则内存溢出。
特殊事项:构造方法不能递归定义。
(3)案例:(面试可能见到)
A:递归求阶乘
B:递归求兔子问题(斐波那契数列)
C:递归遍历目录(带内容的目录)
D:递归删除目录(带内容的目录)
2:IO(掌握)
(1)IO就是在不同设备间传递数据。
(2)IO流分类:
A:流向
输入流 读取数据
输出流 写出数据
B:数据类型
字节流
字节输入流 InputStream
字节输出流 OutputStream
字符流
字符输入流 Reader
字符输出流 Writer
注意:
A:四个顶层类都是抽象类。
B:一般每个体系的流都是以基类作为后缀名。
什么时候使用谁?
如果文件能够通过记事本打开并读懂,就用字符流。
其他的全部使用字节流。
(3)FileWriter写入数据
操作步骤:
A:创建字符输出流对象
B:调用对象的write()方法
C:释放资源
代码体现:
FileWriter fw = new FileWriter("fw.txt");
fw.write("hello,IO");
fw.flush();
fw.close();
几个小问题?
A:创建字符输出流对象做了那几件事情?
B:为什么要flush()?
C:为什么要close()?
D:flush()和close()的区别?
//E:怎么实现换行?
//F:怎么实现追加写入?
G:文件不存在,会创建一个。文件如果存在,到底是重新创建,还是把内容给清空?
(4)FileReader读取数据
操作步骤:
A:创建字符输入流对象
B:调用对象的read()方法
C:释放资源
代码体现:
FileReader fr = new FileReader("fw.txt");
//方式1
//一次读取一个字符
int ch = 0;
while((ch=fr.read())!=-1) {
System.out.print((char)ch);
}
//方式2
//一次读取一个字符数组
char[] chs = new char[1024];
int len = 0;
while((len=fr.read(chs))!=-1) {
System.out.print(String.valueOf(chs,0,len));
}
fr.close();
(5)复制文本文件
数据源:
看用那种类型的流,读取数据。
目的地:
看用那种类型的流,写出数据。
案例:
把当前项目路径下的Demo.txt复制到d盘目录下的Copy.txt中。
代码体现:
方式1:
FileReader fr = new FileReader("Demo.txt");
FileWriter fw = new FileWriter("d:\\Copy.txt");
int ch = 0;
while((ch=fr.read())!=-1) {
fw.write(ch);
}
fw.close();
fr.close();
方式2:
FileReader fr = new FileReader("Demo.txt");
FileWriter fw = new FileWriter("d:\\Copy.txt");
char[] chs = new char[1024];
int len = 0;
while((len=fr.read(chs))!=-1) {
fw.write(chs,0,len);
}
fw.close();
fr.close();
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2