一、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/n/231686.html
微信扫一扫
支付宝扫一扫