美文网首页
JDK8新特性-接口和日期

JDK8新特性-接口和日期

作者: JBryan | 来源:发表于2021-10-08 20:04 被阅读0次

    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
    

    相关文章

      网友评论

          本文标题:JDK8新特性-接口和日期

          本文链接:https://www.haomeiwen.com/subject/pcgxoltx.html