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() 返回一個抽象路徑名數組,這些路徑名錶示此抽象路徑名錶示的目錄中的文件。