Java 各版本新特性

Java 各版本新特性

Java 8

1.函数式接口

  • 有一个接口
  • 接口中有且仅有一个抽象方法

2.Lambda 表达式

()->{}

使用Lambda的前提:函数式接口

3.接口增加默认方法与静态方法

deafault void method();

4.方法引用

使用一对冒号::来实现names.forEach(System.out::println);

5.Stream 流

ArrayList<String> li = new ArrayList<>();
        li.stream()
                .filter(s -> s.contains("王"))
                .filter(s -> s.length() == 2)
                .forEach(System.out::println);
  • filter-接受lambda表达式,从流中排除某些元素;
  • limit-截断流,元素不超过给定的数量;
  • skip(n)-跳过元素,返回一个扔掉了前n个元素的流。若流中的元素不足n个,则返回一个空流,与limit(n)互补;
  • distinct-筛选去重,通过流所生成的hashCode()和equls()去掉重复元素。

6.新的时间日期API

LocalDate 日期、 LocalTime 时间、 LocalDateTime 日期和时间,使用方法完全一样。

新的日期API

其他类的使用:

  • Instant.now().getEpochSecond():获取 时间戳,从Unix元年开始(1970年1月1日到现在的秒数)。
  • Durationbetween(now1, now2):计算两个时间之间的间隔。
  • Period.(now1, now2):计算两个日期之间的间隔。

7.Optinal类

Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。

  • Optional.of(T t) : 创建一个 Optional 实例
  • Optional.empty() : 创建一个空的 Optional 实例
  • Optional.ofNullable(T t):若 t 不为 null,创建 Optional 实例,否则创建空实例
  • isPresent() : 判断当前optinal是否包含值(非空)
  • orElse(T t) : 如果调用对象包含值(非空),返回该值,否则返回t
  • orElseGet(Supplier s) :如果调用对象包含值,返回该值,否则返回 s 获取的值
  • map(lambda): 如果有值对其处理,并返回处理后的Optional,否则返回 Optional.empty()
  • flatMap(lambda):与 map 类似,要求返回值必须是Optional

8.Base64支持

Java 8 标准库中提供了对 Base 64 编码的支持。

        //转为base64位
        String s = Base64.getEncoder().encodeToString("hah哈哈".getBytes());
        System.out.println(s);

        //解码base64
        byte[] decode = Base64.getDecoder().decode(s);
        System.out.println(Arrays.toString(decode));
        System.out.println(new String(decode));

其他java版本

请查看:聊聊 Java8 以后各个版本的新特性

posted @ 2022-02-18 17:44  little_lunatic  阅读(411)  评论(0)    收藏  举报