java8有哪些新特性?

作者:彼岸花开 | 创建时间: 2023-05-09
java8的新特性: 速度更快 代码更少(增加了新的语法Lambda表达式) 强大的Stream API 便于并行 最大化减少控制着异常Optional...
java8有哪些新特性?

操作方法

Lambda表达式: java8引入了一个新的操作符"->",该操作符将表达式拆分为两部分: 左侧:Lambada表示表达式的参数列表 右侧:Lambda表示所需要执行的功能 @Test public void test2() { Consumer<String> consumer = (x) -> System.out.println(x); consumer.accept("我是帅哥"); }

函数式接口 package com.gwolf; @FunctionalInterface public interface MyPredicate<T> { public boolean test(T t); }

方法引用与构造器引用 public void test1() { Consumer<String> con = (x) -> System.out.println(x); Consumer<String> consumer = System.out::println; consumer.accept("我是帅哥"); }

Stream API流式计算 Stream API是java8中处理集合的关键抽象概念,它可以指定您希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API对集合数据进行操作,就类似于使用SQL执行的数据库查询。 package com.gwolf; import com.gwolf.vo.Dept; import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class TestStreamAPI { @Test public void test1() { //可以通过Collection系列集合提供提供的Stream()或parallelStream List<String> list = new ArrayList<>(); Stream<String> stream = list.stream(); //通过Arrays中的静态方法stream()方法得到数组流 Dept[] depts = new Dept[10]; Stream<Dept> deptStream = Arrays.stream(depts); } }

接口中的默认方法与静态方法 public interface MyFun { default  String getName() { return "hello"; } }

新日期API package com.gwolf; import java.time.LocalDate; import java.time.Period; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; public class DateUtils { public static void  main(String[] args) { LocalDate today = LocalDate.now(); System.out.println("今天的日期:" + today); //明天的日期 LocalDate tomrrow = today.plus(1, ChronoUnit.DAYS); System.out.println("明天的日期:" + tomrrow); System.out.println("日期" + tomrrow + "是否在" + today +"之后" + tomrrow.isAfter(today)); System.out.println("日期" + tomrrow + "是否在" + today +"之前" + tomrrow.isBefore(today)); } public static LocalDate plus(LocalDate localDate, int between,ChronoUnit chronoUnit) { return localDate.plus(between,chronoUnit); } /** * 格式化日期 * @param localDate * @param pattern * @return */ public static String parseDate(LocalDate localDate,String pattern) { DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern); return localDate.format(dateTimeFormatter); } /** * 比较两个时间相差的月份 * @param one * @param two * @return */ public static Integer between(LocalDate one,LocalDate two) { return Period.between(one,two).getMonths(); } /** * 字符串转化成日期 * @param strDate * @param pattern * @return */ public static LocalDate formatDate(String strDate,String pattern) { DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern); return LocalDate.parse(strDate,dateTimeFormatter); } }

点击展开全文

更多推荐