Java8特性

日期时间

  • 时间的创建

    • LocalDateTime
  • 时间的获取

    • get
  • 时间的计算

    • plus

    • minus

  • 时间的修改

    • with
  • 时间的转换

    • Formatter.ofPattern

    • toInstant().toEpochMilli

获取当前时间戳

//⽅法⼀System.currentTimeMillis();

//⽅法⼆Calendar.getInstance().getTimeInMillis(); 最慢

//⽅法三new Date().getTime();

Lambda表达式

也称为:闭包closure

允许把函数作为一个方法的参数,使代码变的更加简洁紧凑

代替以前经常写的匿名内部类来实现接口,本质是一个匿名函数

(a,b)->{return a+b;}
或者
(a,b)-> a+b;

左侧的括号: 函数式接口里面定义的抽象方法的形参列表
箭头: Lambda表达式的操作符,看见这个箭头,就可以认为他是一个Lambda表达式
右侧Lambda体: 函数式接口中,我们实现了函数式接口抽象方法的方法体

接口增强

默认方法,静态方法,函数式接口(supplier,consumer,function,predicate)

默认方法default

@FunctionalInterface
public interface XXX {
//默认方法
default int testDefaultMethod(int a,int b){
return a+b;
}
}

静态方法语法static

@FunctionalInterface
public interface XXX {
//静态方法
static int testStaticMethod(int a,int b){
return a+b;
}
}

函数式接口

  • 首先的是一个接口

  • 接口内有且只有一个抽象方法

  • 为防止破坏函数式接口,最好是在接口上使用

  • @FunctionalInterface注解修饰

供给型函数接口supplier

消费型函数接口consumer

常见函数式接口

  • java.util.function包下函数式接口

    • java.lang.Runnable
  • 其他包常见的函数式接口

    • BiConsumer<T,U>代表了一个接受两个输入参数的操作,并且不返回任何结果

    • BiFunction<T,U,R>代表了一个接受两个输入参数的方法,并且返回一个结果

方法引用::

操作符::

对于右侧的Lambda体,仅仅只是调用一个已经存在的方法,可以使用方法引用的方式调用这个已经存在的方法。

  • 类静态方法引用

  • 实例方法引用

  • 类普实例方法引用

  • 构造方法引用

Stream

Java8新加入的API,主要用于一组数据的操作,它的处理方式与传统的方式不同,称为"数据流处理",关注的是对数据的筛选、查找、存储等。
就是将集合/数组/文件/函数等数据转换成流之后再处理(比如对集合数据进行过滤,排序等操作)
Stream并不是数据结构所以不能保存数据,主要目的在于计算。

Stream实例化中间操作(过滤、排序、映射、规约)终止操作(匹配查找、归约、收集)

正则表达式RegExp

^开始

$结束

/.../i i表示不区分大小写

\d 查找数组

[abc]

[^abc]

search

split

match

replace替换

posted @ 2023-01-17 21:28  Rix里克斯  阅读(13)  评论(0)    收藏  举报