Lambda表达式
函数式编程思想
只要能获取到结果,谁去做的,怎么做的都不重要,重视结果,而非过程
冗余的Runnable代码
public class Demo01Runnable {
public static void main(String[] args) {
// 使用匿名内部类的方式实现多线程
new Thread(new RunnableImpl(){
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"新的线程创建了");
}
}).start();
// 使用Lambda表达式,实现多线程
new Thread(()-> {
System.out.println(Thread.currentThread().getName()+"新的线程创建了");
}
).start();
}
}
Lambda参数的无参数无返回值表达方法
public interface Cook {
// 定义无参数无返回值的方法
public abstract void makeFood();
}
public class Demo02Cook {
public static void main(String[] args) {
invokeCook(new Cook() {
@Override
public void makeFood() {
System.out.println("吃饭了");
}
});
invokeCook(() -> {
System.out.println("吃饭了");
}
);
}
// 定义一个方法,参数传递Cook接口,方法内部调用Cook接口中的方法makeFood
public static void invokeCook(Cook cook){
cook.makeFood();
}
}
有参数有返回值
import java.util.Arrays;
public class Demo03Arrays {
public static void main(String[] args) {
Person[] arr = {
new Person("易烊千玺",19),
new Person("王源",18),
new Person("王俊凯",20),
};
/* Arrays.sort(arr, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return o1.getAge()-o2.getAge();
}
});*/
// 使用Lambda简化
Arrays.sort(arr,(Person o1, Person o2)->{
return o1.getAge()-o2.getAge();
});
for (Person person : arr) {
System.out.println(person);
}
}
}
File类
import java.io.File;
/*
java.io.File
文件和目录路径名的抽象表示形式
java把电脑中的文件和文件夹(目录)封装为一个File类,我们可以使用File类对文件和文件夹进行操作
我们可以使用File类的方法
创建、删除、获取 文件夹
判断文件/文件夹是否存在
对文件进行遍历
获取文件的大小
File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法
重点:记住这三个单词
file:文件
directory:文件夹/目录
path:路径
*/
public class Demo01File {
public static void main(String[] args) {
/*
static String pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
static char pathSeparatorChar 与系统有关的路径分隔符。
static String separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
static char separatorChar 与系统有关的默认名称分隔符。
操作路径:路径不能写死了(服务器可能是linux也可能是windows)
C:\develop\a\a.txt windows
C:/develop/a/a.txt linux
"C:"+File.separator+"develop"+develop+"a"+develop+"a.txt"
*/
String pathSeparator = File.pathSeparator;
System.out.println(pathSeparator);//路径分隔符 Windows:分号 Linux:冒号
String separator = File.separator;
System.out.println(separator);//文件名分隔符 Windows:\ linux:/
}
}
File类的构造方法
/*
路径:
绝对路径
相对路径
注意:
1. 路径不区分大小写
2. 路径中的文件名分隔符windows使用反斜杠,反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠
*/
public class Demo02File {
public static void main(String[] args) {
/*
File类的构造方法
*/
// show01();
// show02("c:\\","a.txt");
show03();
}
/*
File(File parent, String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
*/
private static void show03() {
File parent1 = new File("C:\\");
File file = new File(parent1,"hello.java");
System.out.println(file);
}
/*
构造方法摘要
File(String parent, String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
路径分成了两部分:父路径和子路径
好处:父路径和子路径可以单独书写,使用灵活
*/
private static void show02(String parent,String child) {
File file = new File(parent,child);
System.out.println(file);
}
/*
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
注意: 路径可以是以文件结尾,也可以以文件夹结尾
路径可以是绝对路径,也可以是相对路径
路径可以是存在的,也可以是不存在的
创建File对象,只是把字符串路径封装为File对象,不考虑路径真假
*/
private static void show01() {
File f1 = new File("D:\\研究生\\毕业论文\\论文汇总");
System.out.println(f1);
}
}
File类的常用方法
获取功能:
public String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
public String getPath() 将此抽象路径名转换为一个路径名字符串。
public String getName() 返回由此抽象路径名表示的文件或目录的名称。
public long length() 返回由此抽象路径名表示的文件的长度。
判断功能:
public boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。
public boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。
public boolean exists() 测试此抽象路径名表示的文件或目录是否存在。
创建删除功能:
public boolean createNewFile() 当且仅当不存在具有此抽象路径名指定名称的【文件】时,创建一个新的空文件。
public boolean mkdir() 创建单级【文件夹】,可用抽象路径名
public boolean mkdirs() 创建多级【文件夹】,可用抽象路径名
public boolean delete() 删除此抽象路径名表示的文件或目录。 直接在硬盘删除,不走回收站!
遍历功能:
public String[] list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录
public File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。