java 文件路径表达式_Java基础(二十二) Lambda表达式和File类
函數式編程思想
強調的是做什么,而不是以什么樣的方式來做,它忽略了面向對象的復雜語法,只要能夠獲取到結果,誰去做的,怎么做的,都不重要,重要的是結果,不重視過程。
冗余的Runnable代碼
傳統的寫法:
1 public classDemo01Runnable{2 public static voidmain(String[] args){3 //匿名內部類的方式
4 new Thread(newRunnable(){5 @Overrride6 public voidrun(){7 System.out.println("開啟了一個新的線程");8 }9 } ).start();//啟動新線程
10 }11 }
代碼分析:
對于Runnable的匿名內部類用法,可以分析出以下內容:
Thread類需要Runnable接口作為參數,其中抽象方法run用來指定線程任務內容的核心。
為了制定run方法的方法體,不得不需要Runnable接口的實現類
為了省去定義一個RunnableImpl實現類的麻煩,不得不使用匿名內部類。
必須重寫抽象方法run方法,所以方法的名稱、方法的參數、方法的返回值不得不再寫一遍,且不能寫錯。
從這里可以看出,只有方法體才是線程任務的關鍵性內容
編程思想的轉換
強調做什么而不是怎么做
我們真正希望做的事情是:將run方法體內的代碼傳遞給Thread類知曉,能夠加載到即可。
傳遞一段代碼———這是我們真正的目的。
我們需要將程序關注的重點從怎么做回歸到做什么的本質上,過程與形式并不重要。
2014年3月Oracle官方所發布的Java8(JDK1.8)中,加入了Lambda表達式
體驗Lambda表達式的更優寫法
Java 8的新特性,優化剛才的代碼
public classDemo01Runnable{public static voidmain(String[] args){//使用Lambda表達式的方式
new Thread(()->{
System.out.println("開啟了一個新的線程");
}
).start();//啟動新線程
}
}
從上面的代碼可以看出:沒有創建接口實現類對象的操作,不再有抽象方法覆蓋重寫的操作,只寫了線程任務的內容。
從上面的代碼能夠推導出Lambda的語法:
() -> {System.out.println("開啟了一個新的線程");}
前面的一對小括號即run方法,參數為無,里面是空的,此時不需要任何的條件
中間的一個箭頭代表將前面的參數傳遞給后面的代碼
后面的輸出語句即業務邏輯代碼(線程任務內容)
Lambda的標準格式:
格式由三個部分組成:
一些參數
一個箭頭
一段代碼
Lambda表達式的標準格式:
(參數類型1 參數名稱1,參數類型2 參數名稱2,...) -> {代碼語句}
格式說明:
小括號內的語法與傳統方法參數列表一致,無參數則留空,多個參數則用逗號隔開
->是新引入的語法格式,代表指向的動作
大括號內的語法與傳統方法體要求基本一致。
Lambda省略格式
可推導即可省略
Lambda強調的是"做什么",而不是"怎么做",所以凡是可以根據上下文推倒得知的信息,都可以省略。比如:
1 invokeSum(3.14, 3.15, (double d1,double d2)->{2 return d1 +d2;3 });4
5 //省略格式表達
6 invokeSum(3.14,3.15,(d1,d2)->d1 + d2);
省略的規則:
在Lambda標準格式的表達式的基礎上,使用省略寫法的規則是:
小括號內參數的類型可以省略。
如果小括號內有且僅有一個參數,則小括號也可以省略
如果大括號內有且僅有一個語句,則無論是否有返回值,都可以省略大括號、return關鍵字和語句的分號。
Lambda的使用前提
Lambda的語法非常的簡潔,使用非常的簡單,但是有以下注意事項:
1.使用Lambda表達式必須具有接口,且要求接口中有且僅有一個抽象方法,無論JDK內置的Runnable、Comparator接口還是自定義的接口,只有當接口中的抽象方法存在且唯一,才可以使用Lambda
2.使用Lambda必須具有上下文推斷。也就是方法的參數或者是局部變量類型必須為Lambda對應的接口類型,才能使用Lambda作為該接口的實例。
備注:如果有且僅有一個抽象方法的接口,稱為函數式接口。
File類
概述
java.io.File類是文件和目錄路徑名的抽象表示。主要用于文件和目錄的創建、查找、刪除等操作。
Java把電腦中的文件和文件夾(目錄)封裝為了一個File類,我們可以使用File類對文件和文件夾進行操作。
可以使用File類的方法:
創建一個文件、文件夾
刪除一個文件、文件夾
獲取一個文件、文件夾
判斷文件、文件夾是否存在
對文件夾進行遍歷
獲取文件的大小
File類是一個與系統無關的類,任何的操作系統都可以使用這個類中的方法。
路徑 :
絕對路徑:是一個完整的路徑,一般以盤符(D:,C:,c:)為開頭如:
D:\Developer\Java\jdk1.8.0_191
相對路徑:是一個簡化的路徑,相對指的是相對于當前項目的根目錄如:(E:\code\workspace\day26_Lambda)
如果使用當前項目的根目錄,路徑可以簡化書寫,E:\code\workspace\day26_Lambda\.classpath ----> 簡化為:.classpath(可以省略前面項目的根目錄)
注意:
1.路徑是不區分大小寫;
2.路徑中的文件名稱分隔符windows使用反斜杠(\),反斜杠是轉義字符,兩個反斜杠才代表一個普通的反斜杠;
構造方法
public File(String pathname):通過將給定路徑名字符串轉換為抽象路徑名來創建一個新File實例
public File(String parent, String child) 根據 parent 路徑名字符串和 child 路徑名字符串創建一個新 File實例。
public File(File parent ,String child)根據 parent 抽象路徑名和 child 路徑名字符串創建一個新 File實例。
常用API方法
獲取功能的方法
判斷功能的方法
路徑功能的方法
創建刪除的方法
目錄遍歷功能的方法
獲取功能的方法
public String getAbsolutePath() 返回此抽象路徑名的絕對路徑名字符串。
public String getPath(): 將此File轉換為路徑名字符串
public String getName() 返回由此抽象路徑名表示的文件或目錄的名稱。
public long length():返回此File表示的文件的長度。
判斷功能的方法
public boolean exists():判斷File表示的文件或者文件夾是否實際存在
public boolean isDirectory() 判斷此File表示的文件夾是否存在。
public boolean isFile():判斷此File表示的文件是否存在
創建和刪除文件的方法
public boolean cteateNewFile():當且僅當具有該名稱的文件不存在時,創建一個新的空的文件,返回值是true
public boolean delete():刪除由此File表示的文件或者目錄
public boolean mkdir():創建由此File表示的文件夾
public boolean mkdirs():創建由此File表示的文件夾,包括任何必須但是又不存在的父目錄
目錄的遍歷
public String[] list() : 返回一個String數組,表示該File目錄中的所有的子目錄或者子文件
public File[] listFile():返回一個File數組,表示該File目錄中的所有的子目錄或者子文件。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的java 文件路径表达式_Java基础(二十二) Lambda表达式和File类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信用卡刷卡时间技巧
- 下一篇: win10老是开不了机怎么办 解决Win