一、Lambda表達式
Lambda表達式是Java 8最大的特性之一。它是一種匿名函數,可以將函數作為參數傳遞給其他方法,或者作為返回值返回。
Lambda表達式主要由兩部分組成:參數列表和函數體。參數列表包括在小括弧中,多個參數之間用逗號隔開。函數體通常由一條或多條語句組成,如果有多條語句,則需要使用大括弧括起來。
下面是一個簡單的Lambda表達式示例:
public class LambdaDemo {
public static void main(String[] args) {
// 傳統的方式
Runnable r1 = new Runnable() {
@Override
public void run() {
System.out.println("Hello World 1");
}
};
// Lambda表達式
Runnable r2 = () -> System.out.println("Hello World 2");
// 啟動線程
r1.run();
r2.run();
}
}
在代碼中,我們定義了兩個Runnable對象。第一個對象使用傳統的方式創建,而第二個對象使用Lambda表達式創建。最終,我們啟動這兩個線程並輸出了相應的文本。
二、函數式介面
函數式介面是只包含一個抽象方法的介面。Java 8提供了一些新的函數式介面,比如Consumer、Predicate和Supplier等介面,這些介面可以用來處理集合或者Stream等數據。
public class FunctionInterfaceDemo {
public static void main(String[] args) {
// Consumer函數式介面
Consumer consumer = s -> System.out.println(s);
consumer.accept("Hello World");
// Predicate函數式介面
Predicate predicate = s -> s.length() > 0;
System.out.println(predicate.test("Hello World"));
// Supplier函數式介面
Supplier supplier = () -> "Hello World";
System.out.println(supplier.get());
}
}
在代碼中,我們定義了三個函數式介面。Consumer介面用於接收一個參數並對其執行相關的操作;Predicate介面用於接收一個參數並返回一個布爾值;Supplier介面用於生成一些對象。
三、Stream API
Stream API是Java 8中新增的處理集合的API。它可以在不使用循環或迭代器的情況下,對集合進行過濾、映射、排序等操作。
下面是一個Stream API的示例:
public class StreamDemo {
public static void main(String[] args) {
List list = Arrays.asList("Java", "Python", "C++", "JavaScript");
// 過濾出長度大於4的元素
list.stream()
.filter(s -> s.length() > 4)
.forEach(s -> System.out.println(s));
// 將每個元素都轉為大寫並輸出
list.stream()
.map(String::toUpperCase)
.forEach(System.out::println);
// 按照字元串長度排序並輸出
list.stream()
.sorted(Comparator.comparingInt(String::length))
.forEach(System.out::println);
}
}
在代碼中,我們使用Stream API對一個字元串集合進行了過濾、映射、排序等操作。Stream API的鏈式編程風格使代碼變得更加簡潔易讀。
四、Date/Time API
Java 8中新增的Date/Time API提供了更好的日期和時間處理方式。它包含多個類和介面,比如LocalDate、LocalTime、LocalDateTime等,可以輕鬆處理日期、時間、日期時間等相關操作。
下面是一個Date/Time API的示例:
public class DateTimeDemo {
public static void main(String[] args) {
// 獲取當前日期
LocalDate date = LocalDate.now();
System.out.println("Current Date: " + date);
// 獲取當前時間
LocalTime time = LocalTime.now();
System.out.println("Current Time: " + time);
// 獲取當前日期時間
LocalDateTime dateTime = LocalDateTime.now();
System.out.println("Current DateTime: " + dateTime);
// 獲取指定日期
LocalDate date2 = LocalDate.of(2021, 9, 1);
System.out.println("Specified Date: " + date2);
// 獲取指定時間
LocalTime time2 = LocalTime.of(12, 0, 0);
System.out.println("Specified Time: " + time2);
// 獲取指定日期時間
LocalDateTime dateTime2 = LocalDateTime.of(date2, time2);
System.out.println("Specified DateTime: " + dateTime2);
}
}
在代碼中,我們使用Date/Time API獲取了當前日期、時間和日期時間,還獲取了指定的日期、時間和日期時間,並輸出相應的信息。
五、Optional類
Optional類是Java 8新增的一個用於封裝可能為null的值的類。它可以避免NullPointerException異常,並提高代碼的可讀性。
下面是一個Optional類的示例:
public class OptionalDemo {
public static void main(String[] args) {
String str1 = "Hello World";
String str2 = null;
Optional optional1 = Optional.ofNullable(str1);
Optional optional2 = Optional.ofNullable(str2);
optional1.ifPresent(s -> System.out.println(s));
optional2.ifPresent(s -> System.out.println(s));
}
}
在代碼中,我們使用Optional類處理了一個可能為null的字元串。首先,我們使用ofNullable方法創建了兩個Optional對象,然後使用ifPresent方法判斷對象是否為null,並輸出相應的信息。
原創文章,作者:JRLTY,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/371428.html
微信掃一掃
支付寶掃一掃