一、jdk1.8新特性
1、Lambda表達式
List list = Arrays.asList(1, 2, 3, 4, 5); list.forEach(n -> System.out.println(n));
2、方法引用
List list = Arrays.asList("Java", "Python", "C++", "PHP"); list.forEach(System.out::println);
3、Stream API
List list = Arrays.asList(1, 2, 3, 4, 5); int sum = list.stream().filter(i -> i % 2 == 0).mapToInt(Integer::intValue).sum(); System.out.println("Sum of even numbers: " + sum);
二、jdk18新特性有哪些
1、類型註解
在方法參數、局部變量、泛型類等上面添加註解。
public void genericMethod(T[] tArray) { List list = new ArrayList(); ... }
2、重複註解
相同類型的註解可以在同一位置上重複使用。
@FavoriteFruits({@Fruit(name = "apple", color = "red"), @Fruit(name = "banana", color = "yellow")}) public class Person { ... } @Repeatable(FavoriteFruits.class) @interface Fruit { String name(); String color(); } @Retention(RetentionPolicy.RUNTIME) @interface FavoriteFruits { Fruit[] value(); }
3、類型推斷(var關鍵字)
聲明變量時,可以使用var關鍵字進行類型推斷。
var list = new ArrayList(Arrays.asList("Java", "Python", "C++", "PHP")); var stream = list.stream();
三、jdk11新特性
1、局部類型推斷
在lambda表達式、try-with-resources語句中使用var。
var list = Arrays.asList(1, 2, 3, 4, 5); var evenList = list.stream().filter(i -> i % 2 == 0).collect(Collectors.toList()); try (var inputStream = new FileInputStream("file.txt")) { ... }
2、字符串API增強
新增isBlank、lines、strip、stripLeading、stripTrailing等方法。
String str = " hello world "; System.out.println(str.isBlank()); System.out.println(str.strip()); System.out.println(str.stripLeading()); System.out.println(str.stripTrailing()); System.out.println(str.lines().count());
3、HTTP客戶端API
新增HttpClient類,可以用來進行HTTP/2協議的請求。
HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://www.baidu.com")) .GET() .build(); HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body());
以上是JDK新特性的一些亮點,現在的Java版本越來越強大,不斷更新完善的特性也為我們開發提供了更多的選擇。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/231686.html