一、jdk1.8新特性
1、Lambda表达式
Listlist = Arrays.asList(1, 2, 3, 4, 5); list.forEach(n -> System.out.println(n));
2、方法引用
Listlist = Arrays.asList("Java", "Python", "C++", "PHP"); list.forEach(System.out::println);
3、Stream API
Listlist = 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 <@MyTypeAnn T> void genericMethod(T[] tArray) { List<@MyTypeAnn String> 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以上是JDK新特性的一些亮点,现在的Java版本越来越强大,不断更新完善的特性也为我们开发提供了更多的选择。response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body());