【java基础知识整理】java8主要新特性整理

  • Oracle公司于2014年3月发布了java8到现在已经过去了很久了,相信很大部分java开发者在使用java8开发的过程中都基本没使用过一些java8的新特性。在度娘上一搜java8新特性也是各类千奇百怪的文字,我这篇文章主要是整理了部分java8的新特性,并能在实际开发过程中遇到的内容。
  1. Lambda表达式

Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。
Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
使用 Lambda 表达式可以使代码变的更加简洁紧凑。

语法:

(parameters) -> expression
或
(parameters) ->{ statements; }

重要特征:

可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。

简单demo

/**
      * 无参测试(旧)
      * @param:
      * @return:
      * @author: wyc
      * @date: 2020-02-26
     **/
    public static void runableTest1(){
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("测试线程1启动了");
            }
        };
        runnable.run();
    }

     /**
      * 有参测试(新)
      * @param:
      * @return:
      * @author: wyc
      * @date: 2020-02-26
     **/
    public static void runableTest2(){
        Runnable runnable = ()->System.out.println("测试线程2启动了");
        runnable.run();
    }

     /**
      * 内部类
      * @param:
      * @return:
      * @author: wyc
      * @date: 2020-02-26
     **/
    interface MathOperation{
        /**
         *  方法
         * @param a 参数1
         * @param b 参数2
         * @return: 返回
         * @Author: wyc
         * @Date: 2020-02-26
         **/
        int operation(int a,int b);
    }


    public static void  main(String[] args){

        MathOperation s = (a,b)-> a - b;

        System.out.println(s.operation(5,3));

        List testList = new ArrayList<>();
        testList.add(1);
        testList.add(2);
        testList.add(3);
        testList.forEach((a)->System.out.println(a));

        testList.forEach(System.out::println);

        runableTest1();
        runableTest2();

    }
  1. 方法引用

方法引用通过方法的名字来指向一个方法。
方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
方法引用使用一对冒号 :: 。
最简单的方法引用demo,直接调用System.out.println():

        List names = new ArrayList();

        names.add("Google");
        names.add("Runoob");
        names.add("Taobao");
        names.add("Baidu");
        names.add("Sina");

        names.forEach(System.out::println);
  1. Stream API(后面整理mysql连接时配合数据查询一同整理)
  2. Date Time API

Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理。

新的java.time包涵盖了所有处理日期,时间,日期/时间,时区,时刻(instants),过程(during)与时钟(clock)的操作。

    
      // 获取当前的日期时间
      LocalDateTime currentTime = LocalDateTime.now();
      System.out.println("当前时间: " + currentTime);
        
      LocalDate date1 = currentTime.toLocalDate();
      System.out.println("date1: " + date1);
        
      Month month = currentTime.getMonth();
      int day = currentTime.getDayOfMonth();
      int seconds = currentTime.getSecond();
        
      System.out.println("月: " + month +", 日: " + day +", 秒: " + seconds);
        
      LocalDateTime date2 = currentTime.withDayOfMonth(10).withYear(2012);
      System.out.println("date2: " + date2);
        
      // 12 december 2014
      LocalDate date3 = LocalDate.of(2014, Month.DECEMBER, 12);
      System.out.println("date3: " + date3);
        
      // 22 小时 15 分钟
      LocalTime date4 = LocalTime.of(22, 15);
      System.out.println("date4: " + date4);
        
      // 解析字符串
      LocalTime date5 = LocalTime.parse("20:15:30");
      System.out.println("date5: " + date5);
   }```

你可能感兴趣的:(【java基础知识整理】java8主要新特性整理)