1.递归: 自己方法调用自己
形成了隐式循环
必须要存在出口, StackOverFlowError ,不然会栈内存溢出
思想: 将复杂的问题简单化, 知道简单到直接可以得到结果为止
递归比较耗费内存, 所以适当使用,在特定的场景使用
斐波那切数列
//假定一对大兔子每月能生一对小兔子,且每对新生的小兔子经过一个月可以长成一对大兔子,具备繁殖能力,如果不发生死亡,且每次均生下一雌一雄,问10个月后可以有多少兔子
public class Test {
public static void main(String[] args) {
int num = rabbit(10);
System.out.println(num);
}
public static int rabbit(int month) {
if(month==1 || month==2) {
return 1;
}
return rabbit(month-1)+rabbit(month-2);
}
}
2.File
File(String)
File(String,String)
File(File ,String)
createNewFile 创建文件
mkdirs 创建多级目录
delete() 删除文件, 文件被占用着的时候就不能删除成功
过滤器
只保留 文件, 过滤掉文件夹
import java.io.File;
import java.io.FilenameFilter;
public class Test2 {
public static void main(String[] args) {
File file = new File("C:\\Users\\18434\\Desktop\\资料");
String[] list = file.list(new MyFileNameFilter());
for (String string : list) {
System.out.println(string);
}
}
}
class MyFileNameFilter implements FilenameFilter{
@Override
public boolean accept(File dir, String name) {
//System.out.println("====dir===="+dir);//file 对象路径
//System.out.println("====name===="+name);// 文件夹下面的所有文件的名字
File file = new File(dir, name);
if(file.isDirectory()){
return true;
}
//保留后缀名为txt的
if(name.endsWith(".txt")){
return true;
}
return false;// return false 被过滤掉
// true 保留 不被过滤掉
}
}
3.文件字节输入流
1.创建文件字节输入流
2.创建对象
3.将数据读取到数组中
read方法的作用, 读取字节,并且指针向后移动
当读取到文件结尾以后,再次读取读取到的是-1 , -1是文件结尾的标志
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
// 创建文件字节输入流
File file = new File("a.txt")