1. 接口
1.1 default关键字
JDK8之前只能有抽象方法,不能有方法实现。JDK8之后,接口的实现类可以直接调用default修饰的方法。
public interface MyInterface {
default void defaultMethod(){
System.out.println("MyInterface defaultMethod.....");
}
}
public class MyInterfaceImpl implements MyInterface {
public static void main(String[] args) {
MyInterfaceImpl myInterface = new MyInterfaceImpl();
myInterface.defaultMethod();
}
}
1.2 静态方法
JDK8之后,接口中可以有static修饰的静态方法,可以直接使用接口名.静态方法名调用。
public interface MyInterface {
default void defaultMethod(){
System.out.println("MyInterface defaultMethod.....");
}
static void staticMethod(){
System.out.println("MyInterface staticMethod.....");
}
}
public class MyInterfaceImpl implements MyInterface {
public static void main(String[] args) {
MyInterfaceImpl myInterface = new MyInterfaceImpl();
myInterface.defaultMethod();
MyInterface.staticMethod();
}
}
2. 日期处理类
2.1 获取当前日期
JDK8添加了LocalDate(不包含具体时间)、LocalTime(不包含具体日期)、LocalDateTime(包含日期和时间)三个日期处理类。三者API相似,下面简单介绍下LocalDate常用的API。
当前时间是:2021年10月8日,星期五
public static void main(String[] args) {
LocalDate localDate = LocalDate.now();
System.out.println("一个星期的第几天:" + localDate.getDayOfWeek());
System.out.println("一个月的第几天:" + localDate.getDayOfMonth());
System.out.println("一年的第几天:" + localDate.getDayOfYear());
System.out.println("哪个月:" + localDate.getMonth());
System.out.println("哪一年:" + localDate.getYear());
}
输出结果:
一个星期的第几天:FRIDAY
一个月的第几天:8
一年的第几天:281
哪个月:OCTOBER
哪一年:2021
2.2 日期加减
当前日期是:2021年10月8日,星期五。LocalTime和LocalDateTime的API相似,不再累述。
public static void main(String[] args) {
LocalDate localDate = LocalDate.now();
System.out.println("当前日期加上7天:" + localDate.plusDays(7));
System.out.println("当前日期加上1个月:" + localDate.plusMonths(1));
System.out.println("当前日期加上1年:" + localDate.plusYears(1));
System.out.println("当前日期减去7天:" + localDate.minusDays(7));
}
打印结果:
当前日期加上7天:2021-10-15
当前日期加上1个月:2021-11-08
当前日期加上1年:2022-10-08
当前日期减去7天:2021-10-01
2.3 日期比较
当前日期是:2021年10月8日,星期五。可以使用LocalDate提供的isAfter、isBefore、isEqual方法用于比较两个日期
public static void main(String[] args) {
LocalDate localDate = LocalDate.now();
//获取明年的今天
LocalDate nextDate = localDate.plusYears(1);
//判断明年的今天,是否在今天之后
System.out.println(nextDate.isAfter(localDate));
//判断明年的今天,是否在今天之前
System.out.println(nextDate.isBefore(localDate));
//判断明年的今天,是否等于今天
System.out.println(nextDate.isEqual(localDate));
}
输出结果:
true
false
false
2.4 日期格式化
JDK8之前,使用SimpleDateFormat进行日期格式化,非线程安全。JDK8之后,使用DateTimeFormatter,线程安全。
public static void main(String[] args) {
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(dateTimeFormatter.format(localDateTime));
}
输出结果:
2021-10-08T19:54:37.532
2021-10-08 19:54:37
2.5 计算日期时间差
JDK8 加入了Duration类用来计算两个日期之间相差的毫秒数、天数等。当前时间:2021年10月8日
public static void main(String[] args) {
LocalDateTime firstDate = LocalDateTime.now();
LocalDateTime secondDate = LocalDateTime.of(2021, 11, 11, 0, 0, 0);
Duration duration = Duration.between(firstDate, secondDate);
System.out.println("相差毫秒数:" + duration.toMillis());
System.out.println("相差分钟:" + duration.toMinutes());
System.out.println("相差小时:" + duration.toHours());
System.out.println("相差天数:" + duration.toDays());
}
输出结果:
相差毫秒数:2865506329
相差分钟:47758
相差小时:795
相差天数:33
网友评论