一、Lambda表達式
Java8中引入了Lambda表達式來簡化代碼,在某些情況下可以替代匿名內部類,使用Lambda表達式可以更加簡明和易於編寫。Lambda表達式本質上是一個代碼塊,它可以作為函數式介面(只有一個抽象方法的介面)的實現。
下面是一個例子:使用Lambda表達式和函數式介面的方式來計算兩個數字的和:
interface Calculator{
int add(int a, int b);
}
public class LambdaDemo{
public static void main(String[] args){
Calculator calculator = (a, b) -> a + b;
System.out.println(calculator.add(3, 5)); // 輸出8
}
}
在這個例子中,我們創建了一個Calculator介面來定義一個抽象的add方法,然後使用Lambda表達式實現了這個介面中的方法。最後,我們通過calculator.add(3, 5)來輸出結果。
二、Stream API
Stream API是Java 8中引入的另一個重要的特性,它使得處理集合和數組的操作更加簡單和高效。使用Stream API,我們可以在一行代碼中完成許多複雜的操作,如過濾、映射、分組、排序等。
下面是一個例子:使用Stream API來過濾並排序一個字元串列表中的大寫字母:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamDemo{
public static void main(String[] args){
List<String> list = Arrays.asList("abc", "ABD", "efg", "GGH");
List<String> result = list.stream()
.filter(str -> str.equals(str.toUpperCase()))
.sorted((str1, str2) -> str1.compareTo(str2))
.collect(Collectors.toList());
System.out.println(result); // 輸出[ABD, GGH]
}
}
這個例子展示了Stream API中的filter()、sorted()和collect()方法的用法。通過使用filter()方法,我們只保留了大寫字母,然後使用sorted()方法進行排序,最後使用collect()方法將結果收集到一個列表中。
三、Optional類
Optional類是Java 8中引入的一個有用的類,它可以防止我們在程序中出現空指針異常。Optional類可以將一個可能為null的對象封裝在其中,並提供了一些方法來判斷這個對象是否為null,從而避免了空指針異常的發生。
下面是一個例子:使用Optional類來避免空指針異常:
public class OptionalDemo{
public static void main(String[] args){
String str = null;
Optional<String> opt = Optional.ofNullable(str);
System.out.println(opt.isPresent()); // 輸出false
}
}
在這個例子中,我們創建了一個可能為null的字元串對象,並使用Optional.ofNullable()方法將這個對象封裝在Optional類中。然後,我們通過opt.isPresent()方法判斷這個對象是否為null。
四、介面的默認方法
在Java 8中,介面可以包含默認方法,這種方法可以在介面中提供默認實現。這使得我們可以在不破壞介面向後兼容性的前提下,在介面中添加新的方法。
下面是一個例子:使用介面的默認方法來實現一個簡單的日誌記錄器:
interface Logger{
void log(String message);
default void info(String message){
log("[INFO] " + message);
}
}
public class DefaultMethodDemo{
public static void main(String[] args){
Logger logger = message -> System.out.println(message);
logger.info("This is an information message.");
// 輸出[INFO] This is an information message.
}
}
在這個例子中,我們定義了一個Logger介面,其中包含一個抽象的log()方法和一個默認的info()方法。然後,我們創建了一個Lambda表達式來實現這個介面中的方法,並使用logger.info()方法來記錄信息。
五、日期時間API
Java 8引入了新的日期時間API,它提供了比舊的java.util.Date和java.util.Calendar類更加簡單和易用的方式來處理日期和時間。新的API包含了許多類和方法,如LocalDate、LocalTime、LocalDateTime等,它們使得日期和時間的處理變得更加方便和靈活。
下面是一個例子:使用LocalDate和DateTimeFormatter來格式化日期:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateTimeDemo{
public static void main(String[] args){
LocalDate date = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = date.format(formatter);
System.out.println(formattedDate); // 輸出2021-08-10
}
}
在這個例子中,我們使用LocalDate類來獲取當前日期,並使用DateTimeFormatter類來定義日期的格式。然後,我們使用date.format()方法來將日期格式化為指定的格式,並輸出結果。
六、總結
Java 8引入了許多新特性,如Lambda表達式、Stream API、Optional類、介面的默認方法和新的日期時間API等,它們使得代碼更加簡潔、易於閱讀和維護。我們應該在實際開發中積極使用這些新特性,從而提高代碼質量和開發效率。
原創文章,作者:WRTZS,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/329013.html