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 日期和时间,使用方法完全一样。

其他类的使用:
- 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));


浙公网安备 33010602011771号