java基础第18天File和递归 笔记

  1. IO:(Input Output)是输入输出流
    从内存到硬盘就是输出流Output
    从硬盘到内存就是输入流Input

    IO操作的最基础的是文件File

  2. File

    1. 概念:就是java中的一个文件或者文件夹。如果没有后缀就表示是一个文件夹,如果有后缀就表示文件。
    2. 作用:为了IO流提供操作的基础
    3. 使用:
      1. 常量:
        1.1. static String pathSeparator
        与系统相关的路径分隔符字符,为方便起见,表示为字符串。
        1.2. static String separator

      2. 构造方法:
        2.1 File(String pathname) 根据文件名创建一个File对象,
        pathname:(如果有后缀就是一个文件对象,如果没有后缀会默认为是一个文件夹对象)
        1. 相对路径:相对于当前Java类的项目
        2. 绝对路径:从根目录或者盘符开始 /都表示从根目录或者盘符开始

        2.2 File(String parent, String child) 在父级目录下创建一个文件或文件夹
        parent:父级目录
        child:当前目录或者当前文件

        2.3 File(File parent, String child) 在父级目录下创建一个文件或文件夹

      3. 常用方法:
        常用方法:获取子文件夹或者子文件方法

      • 1.String[] list()获取当前文件夹下所有的子文件夹或者子文件的名 //文件没有下一级
        2.File[] listFiles() 获取当前文件夹下所有的子文件夹或者子文件对象

        =有过滤功能=
        3.String[] list(FilenameFilter filter)
        获取根据文件名过滤后的文件名
        FilenameFilter:文件名过滤器接口
        4.File[] listFiles(FilenameFilter filter)
        获取根据文件名过滤后的文件对象
        FilenameFilter:文件名过滤器接口

        -----------------------------上面只能根据文件名或者文件夹名过滤,下面的可以通过文件的其他属性过滤,例如:文件大小等-----------------------------
        5.File[] listFiles(FileFilter filter)
        获取根据文件过滤后的文件对象
        FileFilter:文件过滤器接口

  3. 递归:

    1. 概念:是一种思想,也是一种算法。在方法内部调用自己的方法。(自己干自己)

    2. 作用:就是简化有相似的业务逻辑(循环)代码。

    3. 使用规律特点:

      1. 通过数值带入的方式,查找逻辑规律: 将所有的已知条件写出来
        就是有相似运算逻辑的代码
      2. 通过条件判断(条件/循环)的方式,在满足条件的时候根据规律调用自己的方法。
        如果不满足就不会自己的方法,这就是出口
    4. 使用场景:

      1. 树状结构数据、菜单结构、上下级关系等的数据查询
      2. 有相似逻辑运算的结构
      3. 适用于层级结构少,数据量小的场景。(最重要)如果层级多,且数据量大用循环。
    5. 解决了哪些问题:
      (1)数据的定义是按递归定义的。(Fibonacci函数:斐波拉契数列)
      (2)问题解法按递归算法实现。(汉诺塔问题)
      这类问题虽则本身没有明显的递归结构,但用递归求解比迭代求解更简单,如Hanoi问题。
      (3)数据的结构形式是按递归定义的。
      如二叉树、广义表等,由于结构本身固有的递归特性,则它们的操作可递归地描述。

    6. 注意事项:

      1. 递归必须 有出口
      2. 能用循环用循环,不要用递归,因为效率极其低下。
        为什么效率低下?
        方法的调用都是创建新栈帧,入栈,而栈层级是有限制的
        StackOverflowError : 栈内存溢出错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值