一、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