JDK1.8新特性++
简介:
jdk8,添加的新内容
如jdk5添加反射,jdk2添加集合...
函数式接口
简介:
一个接口中只有一个抽象方法.称为函数式接口;
相关注解;
@FunctionalInterface
作用:验证是不是函数式接口
系统常见的函数式接口
系统常见的函数式接口
接口名 返回值类型 抽象方法 分类
Consumer<T> void accept(T t) 消费性接口
Supplier<T> T get() 供给型接口
Function<T, R> R apply(T t) 函数型接口
Predicate<T> boolean test(T t) 断言型接口
Lambda表达式
简介
一种特殊的匿名内部类
Lambda表达式优点
语法简洁
节省内存:不会生成class文件
语法:
()->{}
在lambda式中,可以省略形参的数据类型
注意:
1.创建匿名内部类中只有一个方法,才可以使用Lambda表达式
2.当只有一个形参时,可以省略小括号不写
3.在Lambda表达式中,可以省略形参的数据类型
4.当只有一个一行代码时时,可以省略大括号不写
5.当只有一个一行代码时时,且该代码是返回值值时,要省略大括号,也需要将return也去掉
方法引用
简介;
在lambdab表达式的前提下的一些输入情况可以继续简化
常见形式
对象::实例方法
对象::静态方法
类::实例方法
类::new
流(工作流)
简介
Stream:工作流
类似集合
集合中存储的是数据;
流中存储的是过程;
特点
自己不会存储数据
不会改变原来数据
使用
1,创建
方案1.
通过collection对象提供的的stream方法
通过collection对象提供的parallelStream方法法
方案2.
通过Arrays提供的stream方法
方案3.
通过Stream接口中的提供的方法of,iterate,generate创建流
方案4.
通过Stream接口的子类或子接口对象调用of,iterate,generate创建
2,中间键
中间键可以有多个
filter:过滤
limit:分页
distinct:去重
map:映射
可以 有多个中间操作,也可以没有
3,终止操作(结束)
注意:一旦进行终止操作,该流就不能使用了
forEach遍历
min:最小值
max:最大值
count:数量
reduce:规约
collect:收集
结束操作有且只有一个
新时间API
相关的类与方法
提供的类有
localDate
//获取当前日期
LocalDate.now();
//获取指定日期
LocalDate.of(参数年,参数月,参数日)
localTimer
//获取当前时间
LocalTimer.now();
//获取指定时间
LocalTimer.of(参数时,参数分,参数秒)
LocalDateTime
//获取当前日期时间
LocalDateTimer.now();
//获取指定时间日期
LocalDateTimer.of(参数年,参数月,参数日,参数时,参数分,参数秒)
//获取时间
对象.getYear();
对象.getxxx();
...
//设置时间
对象.withYear();
对象.getxxx();
...
//增加时间
对象.plusHours()
对象.getxxx();
...
//减少时间
对象.minsHours()
对象.getxxx();
...
替换Date
Instant
瞬时
提供的方法:
now()
ofEpochMilli(毫秒值);
...
ZoneId
时区
ZoneId.systemDefault()//系统默认时区
...
DateTimeFormatter相关用法
相当于替换SimpleDateFormat
1.将固定格式的字符串转换为时间
1.输入固定格式字符串
DateTimeFormatter.ofPattern("需要的固定格式字符串");
2.将字符串转化为LocalDateTime对象
LocalDateTime.parse("需要转化的字符串",固定格式字符串对象)
/**
*相关代码
*/
//将固定格式转换为时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse("2022-12-12 17:23:46", formatter);
System.out.println(dateTime);
2.将时间转换成为固定格式字符串
1.输入固定格式字符串
DateTimeFormatter.ofPattern("需要的固定格式字符串");
2.获取需要转换的时间对象
LocalDateTime.now();
3.将时间对象转换为固定格式字符串
方法:
固定格式对象.format(时间对象)
/**
*相关代码
*/
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日hh:mm:ss:SSS");
LocalDateTime time = LocalDateTime.now();
String str = formatter.format(time);
Sysytem.out.Println(str)
Date与LocalDateTime的相互转换
一,Date对象转换为LocalDateTime
步骤:
1.拿到要转换的Date对象
2.将Date对象转换成为Instant对象
方法:
Date对象.toInstant()
3.将瞬时对象转换成为LocalDateTime对象
方法:
LocalDateTime.ofInstant(瞬时对象,时区);
Date date = new Date();
Instant instant = date.toInstant();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
二, LocalDateTime对象转换为Date对象
步骤:
1,拿到要转换的LocalDateTime对象
2,将LocalDateTime对象转换成为时区对象
方法:
LocalDateTime对象.atZone(时区);
3.将2中得到的时区对象转换成为瞬时对象
方法;
时区对象.toInstant()
4.通过Date提供的静态方法将3中得到的瞬时对象转换为我们需要的Date对象
方法:
Date date = Date.from(瞬时对象);
LocalDateTime dateTime = LocalDateTime.now();
ZonedDateTime zonedDateTime = dateTime.atZone(ZoneId.systemDefault());
Instant instant2 = zonedDateTime.toInstant();
Date date2 = Date.from(instant2);