Optional类
Optional是一个没有子类的工具类,Optional是一个可以为null的容器对象。它的作用主要就是为了解决避免Null检
查,防止NullPointerException。
Optional类的创建方式:
Optional.of(T t)
: 创建一个 Optional 实例
Optional.empty()
: 创建一个空的 Optional 实例
Optional.ofNullable(T t)
:若 t 不为 null,创建 Optional 实例,否则创建空实例
新的日期和时间 API
JDK 8中增加了一套全新的日期时间API,这套API设计合理,是线程安全的。新的日期及时间API位于 java.time 包
中,下面是一些关键类。
LocalDate
:表示日期,包含年月日,格式为 2019-10-16
LocalTime
:表示时间,包含时分秒,格式为 16:38:54.158549300
LocalDateTime
:表示日期时间,包含年月日,时分秒,格式为 2018-09-06T15:33:56.750
DateTimeFormatter
:日期时间格式化类。
Instant
:时间戳,表示一个特定的时间瞬间。
Duration
:用于计算2个时间(LocalTime,时分秒)的距离
Period
:用于计算2个日期(LocalDate,年月日)的距离
ZonedDateTime
:包含时区的时间
Base64
对Base64编码的支持已经被加入到Java 8官方库中,这样不需要使用第三方库就可以进行Base64编码,例子代码如下:
package com.javacodegeeks.java8.base64;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64s {
public static void main(String[] args) {
final String text = "Base64 finally in Java 8!";
final String encoded = Base64
.getEncoder()
.encodeToString(text.getBytes(StandardCharsets.UTF_8));
System.out.println(encoded);
final String decoded = new String(
Base64.getDecoder().decode(encoded),
StandardCharsets.UTF_8);
System.out.println(decoded);
}
}
输出结果如下:
QmFzZTY0IGZpbmFsbHkgaW4gSmF2YSA4IQ==
Base64 finally in Java 8!
新的Base64API也支持URL和MINE的编码解码。
- Base64.getUrlEncoder()
- Base64.getUrlDecoder()
- Base64.getMimeEncoder()
- Base64.getMimeDecoder()
BASE64不是用来加密的,是BASE64编码后的字符串,全部都是由标准键盘上面的常规字符组成,这样编码后的字符串在网关之间传递不会产生UNICODE字符串不能识别或者丢失的现象。你如果仔细研究过EMAIL就会发现其实EMAIL就是用base64编码过后再发送的。然后接收的时候再还原。