一、Lambda表达式
Java8新增Lambda表达式,可以大大简化代码,使代码更加易读、易维护。Lambda表达式是一种匿名函数,可以将函数作为参数传递给其他方法。以下是一个简单的示例:
List<String> list = new ArrayList<>(); list.add("John"); list.add("Doe"); list.add("Jane"); list.add("Doe"); //使用Lambda表达式过滤List List<String> filteredList = list.stream().filter(s -> s.startsWith("J")).collect(Collectors.toList()); //打印输出结果 System.out.println(filteredList);
以上代码将会输出过滤后的List:
[John, Jane]
代码说明:
- 创建一个List并添加一些字符串;
- 使用Lambda表达式过滤List;
- 使用collect方法将过滤后的元素收集到一个新的List中;
- 打印输出结果。
二、Stream API
Java8新增Stream API,可以轻松地操作集合和数组。Stream API提供了一系列非常有用的操作,如过滤、排序、去重、映射等等。以下是一个示例:
int[] numbers = {2, 5, 7, 1, 9, 8}; //使用Stream API求和 int sum = Arrays.stream(numbers).sum(); //打印输出结果 System.out.println(sum);
以上代码将会输出数字数组的和:
32
代码说明:
- 创建一个数字数组;
- 使用Arrays.stream方法将数字数组转换成IntStream;
- 使用sum方法求和;
- 打印输出结果。
三、接口默认方法
Java8新增接口默认方法,可以在接口中提供默认的实现。这是一种非常有用的功能,因为它可以在不破坏现有代码的情况下,向现有接口添加新的方法。以下是一个示例:
interface Person { void sayHello(); default void sayBye() { System.out.println("Bye!"); } } //实现Person接口 class Student implements Person { public void sayHello() { System.out.println("Hello!"); } } //使用Student类 Person p = new Student(); p.sayHello(); //输出Hello! p.sayBye(); //输出Bye!
以上代码定义了一个Person接口和一个实现了该接口的Student类。Person接口中定义了一个抽象的sayHello方法和一个默认的sayBye方法。创建一个Student对象后,可以调用sayHello和sayBye方法。如果不重写sayBye方法,那么默认的实现将会被使用。
四、函数式接口
函数式接口是指只包含一个抽象方法的接口。Java8引入了新注解@FunctionalInterface来标注函数式接口,以便编译器进行检查。以下是一个示例:
@FunctionalInterface interface Calculator { int calculate(int a, int b); } //使用Lambda表达式创建Calculator对象 Calculator add = (a, b) -> a + b; //计算两个数字相加 int result = add.calculate(10, 5); //15 //打印输出结果 System.out.println(result);
以上代码定义了一个Calculator接口,并使用Lambda表达式创建了Calculator对象。Calculator接口中只包含一个抽象方法calculate。使用Calculator对象,可以计算两个数字相加。Lambda表达式可以用来代替匿名内部类,从而使代码更加简洁。
五、日期时间API
Java8新增了全新的日期时间API,可以更方便地处理日期和时间。以下是一个示例:
LocalDate date = LocalDate.now(); //使用格式化字符串输出日期 String formattedDate = date.format(DateTimeFormatter.ofPattern("yyyy/MM/dd")); //打印输出结果 System.out.println(formattedDate); //例如:2022/01/01
以上代码使用LocalDate类获取当前日期,并使用DateTimeFormatter类格式化输出日期。可以使用不同的格式化字符串来输出不同格式的日期。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/198692.html