JAVA8——新特性及基本使用

一、Lambda表达式

二、方法引用

三、默认方法、静态方法(接口)

四、Stream流

五、Optional工具类

六、DateTime日期时间时区操作

1.Clock类

Clock类使用时区来返回当前的纳秒时间和日期。Clock可以替代System.currentTimeMillis()和TimeZone.getDefault(),实例如下:

final Clock clock = Clock.systemUTC();
System.out.println( clock.instant() );
System.out.println( clock.millis() );

结果:

2021-02-24T12:24:54.678Z
1614169494678

2.LocalDate、LocalTime 和 LocalDateTime类

LocalDate、LocalTime 和 LocalDateTime 类,都是用于处理日期时间的 API,在处理日期时间时可以不用强制性指定时区。

  • 2.1.LocalDate
    LocalDate 仅仅包含ISO-8601日历系统中的日期部分,实例如下:
//获取当前日期
final LocalDate date = LocalDate.now();
//获取指定时钟的日期
final LocalDate dateFromClock = LocalDate.now( clock );

System.out.println( date );
System.out.println( dateFromClock );

结果:

2021-02-24
2021-02-24
  • 2.2.LocalTime
    LocalTime 仅仅包含该日历系统中的时间部分,实例如下:
//获取当前时间
final LocalTime time = LocalTime.now();
//获取指定时钟的时间
final LocalTime timeFromClock = LocalTime.now( clock );

System.out.println( time );
System.out.println( timeFromClock );

结果:

20:36:16.315
20:36:16.315
  • 2.3.LocalDateTime
    LocalDateTime 类包含了 LocalDate 和 LocalTime 的信息,但是不包含 ISO-8601 日历系统中的时区信息,实例如下:
//获取当前日期时间
final LocalDateTime datetime = LocalDateTime.now();
//获取指定时钟的日期时间
final LocalDateTime datetimeFromClock = LocalDateTime.now( clock );

System.out.println( datetime );
System.out.println( datetimeFromClock );

结果:

2021-02-24T20:38:13.633
2021-02-24T20:38:13.633

3.ZonedDateTime类

如果你需要特定时区的信息,则可以使用 ZoneDateTime,它保存有 ISO-8601 日期系统的日期和时间,而且有时区信息,实例如下:

// 获取当前时间日期
final ZonedDateTime zonedDatetime = ZonedDateTime.now();
//获取指定时钟的日期时间
final ZonedDateTime zonedDatetimeFromClock = ZonedDateTime.now( clock );
//获取纽约时区的当前时间日期
final ZonedDateTime zonedDatetimeFromZone = ZonedDateTime.now( ZoneId.of("America/New_York") );

System.out.println( zonedDatetime );
System.out.println( zonedDatetimeFromClock );
System.out.println( zonedDatetimeFromZone );

结果:

2021-02-24T20:42:27.238+08:00[Asia/Shanghai]
2021-02-24T12:42:27.238Z
2021-02-24T07:42:27.241-05:00[America/New_York]

4.Duration类

Duration类,它持有的时间精确到秒和纳秒。利用它我们可以很容易得计算两个日期之间的不同,实例如下:

final LocalDateTime from = LocalDateTime.of( 2020, Month.APRIL, 16, 0, 0, 0 );
final LocalDateTime to = LocalDateTime.of( 2021, Month.APRIL, 16, 23, 59, 59 );
//获取时间差
final Duration duration = Duration.between( from, to );
System.out.println( "Duration in days: " + duration.toDays() );
System.out.println( "Duration in hours: " + duration.toHours() );

结果:

Duration in days: 365
Duration in hours: 8783

七、Base64

在 Java 8中,Base64 编码已经成为 Java 类库的标准,实例如下:

public class Tester {
    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 的编码解码,详情可以查看具体类方法。

八、Nashorn JavaScript 引擎

参考链接:

  • 链接:[link](Java8 新特性全面介绍 - 程序员志哥的文章 - 知乎
    https://zhuanlan.zhihu.com/p/439176814)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值