jdk1.8新特性

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对象转换为LocalDateTime
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对象转换为Date对象
LocalDateTime dateTime = LocalDateTime.now();
ZonedDateTime zonedDateTime = dateTime.atZone(ZoneId.systemDefault());
Instant instant2 = zonedDateTime.toInstant();
Date date2 = Date.from(instant2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值