2020.12.12,函数式编程思想,lambda表达式

函数式编程思想:强调结果,怎么做的不重要只要结果

  • Thread类需要Runable接口作为参数,其中抽象方法run用来指定线程任务内容的核心
  • 为了制定run方法的方法体不得不需要Runable接口的实现类
  • 为了省去定义一个RunableImpl实现累的麻烦,不得不使用匿名内部类。
  • 必须重写run方法,所以方法名称和参数要写,返回值要写
  • 但是只有【方法体才是线程任务的关键性内容】
    编程思想的转换:
    函数式编程强调做什么而不是怎么做

我们真正洗碗做的事情就是把run方法体内的代码传递给Thread类,让Thread能知晓能加载到就可以了。本质就是传递一段代码。
|
体验lambda表达式的更优写法:
public class Demo01Runable{
public static void main(String[] args){
//使用lambda表达式的方式
new Thread(()->{
System.out.println("开启新线程");
}
).start();
}
}
|
lambda语法
()->{//任务代码}
前面一堆小括号就是以前的run方法,参数为无,
中间的箭头是参数传递作用,就是把前面小括号里面的参数传给后面的代码
花括号里面就写线程任务
|
lambda标准格式:三部分组成(一般是用来替换接口的)

  1. 小括号内些一些参数
  2. 箭头传参数
  3. 大括号里面写代码
    |
    lambda表达式标准格式
    (参数列表)->{代码}
    |
    格式说明
  • 小括号内语法与传统的参数列表一致,无参就留空
  • ->引入语法格式,代表指向动作
  • 大括号内语法与传统语法一致
    |
    lambda的省略格式:
    incokSet(3.14, 3.15, (double d1,double d2) -> {
    return d1+d2;
    });
    //省略格式,因为前面是3.14和3.15,那么double可以省略,因为知道有返回值return可以省略。
    inckeSet(3.14,3.15,(d1,d2) -> di+d2);
    |
    省略规则:
  1. 小括号内参数类型可以省略,

  2. 如果小括号内有且仅有一个参数,小括号都能省略。

  3. 如果大括号内有且只有一个语句,大括号可以不要,return也可以不要
    |
    lambda使用格式:
    ambda语法很简洁,使用很简单有一下注意事项

  4. 使用lambda表达式是替代的接口无论是Runable还是comparator还是自定义接口,只有,接口中抽象方法唯一才可以使用,但是可以有很多其他方法

  5. 使用lambda表达式具有上下文推断,也就是方法的参数或者局部变量类型必须为lambda对应的接口类型,才能使用lambda作为该接口的实例。

备注:如果有且仅有一个抽象方法的接口。称为【函数式接口】
|||||||||||||||||||||
|||||||||||||||||||||
|||||||||||||||||||||
File类
java,io,File类,是文件的目录名称的抽象表示,主要用于问价和目录的创建,查找,删除
|
File类中的构造方法

  • public File(String pathname); 在指定的路径下查看文件路径
  • public File(String parent,String child); 根据parent路径和child路径,查看我们的问价地址,父路径和子路径可以单独操作
  • public File(File parent,String child ); 路径分为两部分,父路径是一个file类型,可以调用Api方法就很方便哦
    |
    常用API方法
    1. 获取功能方法
    public String getAbsolutePath(); 获取绝对路径获取构造方法里面的路径,并返回绝对路径(有盘符开头的)
    管构造方法是不是绝对路径返回的肯定是绝对路径

ublic String getPath();将次File转换为路径字符串传入什么路径返回的就是什么路径,不一定是绝对路径
public String getName();返回此File表示的文件或目录的名称看结尾部分,是什么就返回什么
public long length(); 返回此File表示的文件的长度是文件大小,不是文件夹大小,文件夹没有大小,不存在的也没有大小为0
|
2. 判断功能的方法:
public boolean exists();判断File表示的文件或者文件夹是都实际存在相对路径的时候只能是省去根路径可以
public Boolean isDirectory();判断此File表示的文件夹是否存在、表示是以文件夹结尾。是就是true
public boolean isFile();判断文件是否存在,是否以文件结尾,是就是true
|
3. 创建删除的方法:
public boolean createNewFile(); 当且仅当具有该名称的文件不存在时创建一个新的空文件,返回值为true,有异常需要抛出
注意:不能创建文件夹,要抛出异常哦。如果文件已经存在,那么不会再创建新的了如果给出的路径不存在,那么系统就会报错
public boolean delete();删除File表示的文件或文件夹,删除之后回收站也看不见
ublic boolean mkdir(); 创建由此File表示的文件夹,单级空文件夹
public boolean mkdirs();创建文件夹,包括任何必须但是又不存在的夫目录 ,多级空文件夹
|
4.目录遍历的方法:
public String[] list(); 返回一个String数组,表示该File目录中所有的子目录或者子文件
public File[] listFile();返回一个File数组,表示该File目录中的所有的子目录
注意:遍历的是构造方法里面指定的目录,路径不存在就会空指针,如果不是目录也会抛出空指针

原文地址:https://www.cnblogs.com/tushao/p/14126861.html