18,jdk新特性

Posted 孫sun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了18,jdk新特性相关的知识,希望对你有一定的参考价值。

jdk 8.0 

Lambda

package java4;

import org.junit.Test;

import java.util.Comparator;
import java.util.function.Consumer;

/*
Lambda 表达式的使用
1.举例:(o1,o2) -> Integer.compare(o1,o2);
2.格式:
      -> : lambda 操作符 或 箭头操作符
           箭头左边:lambda的形参列表(接口中的抽象方法的形参列表)
           箭头右边:lambda体 (重写抽象方法的方法体)

3.lambda的表达式的使用:(六种情况)

4.lambda的本质:作为函数式接口的实例

5.如果一个接口中,只申明了一个抽象方法,则此接口就称为函数式接口

java内置的4大核心函数式接口
消费型接口 :Consumer
供给型接口:Supplier
函数型接口:Function
断定型接口:Predicate

 */
public class LambdaTest1 {
    @Test
     public void test(){
        //语法格式一:无参、无返回值
        Runnable r1 = new Runnable(){
            @Override
            public void run() {
                System.out.println("上海");
            }
        };
        r1.run();
        System.out.println("lambda的写法");
        Runnable r2 = () -> System.out.println("北京");
        r2.run();
    }
    @Test
    public void test2(){
        //语法格式二:lambda 需要一个参数,但是没有返回值
        Consumer<String> con = new Consumer<String>(){
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        };
        con.accept("上海");
        //lambda表达式的写法
        Consumer<String> con1 = (String s) -> {System.out.println(s);};
        con1.accept("魔都");
    }
    @Test
    public void test3(){
        //语法格式三:数据类型可以胜率,因为可有编译器推断得出,称为类型推断
        Consumer<String> con1 = (s) -> {System.out.println(s);};
        con1.accept("魔都");
    }
    @Test
    public void test4(){
        //语法格式四:lambda 若只需要一个参数时,参数小括号可以省略
        Consumer<String> con1 = s -> {System.out.println(s);};
        con1.accept("魔都");
    }
    @Test
    public void test5(){
        //语法格五:lambda 若需要两个及以上参数时,多条执行语句,并可以有返回值
        Comparator<Integer> com1 = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                System.out.println(o1);
                return o1.compareTo(o2);
            }
        };
        System.out.println(com1.compare(12,21));
       //lambda的方式
        Comparator<Integer> com2 = (o1,o2) ->
            {
                System.out.println(o1);
                return o1.compareTo(o2);
            };
        System.out.println(com2.compare(21,11));
    }
    @Test
    public void test6(){
        //语法格式六:lambda 只需要一条语句时, return 和 {} 可以省略
        Comparator<Integer> com2 = (o1,o2) -> o1.compareTo(o2);
        System.out.println(com2.compare(21,11));
    }
    
}

 

以上是关于18,jdk新特性的主要内容,如果未能解决你的问题,请参考以下文章

18,jdk新特性

译ECMAScript 2016, 2017, 2018 新特性之必读篇

JDK19都出来了~是时候梳理清楚JDK的各个版本的特性了JDK18特性讲解

JDK19都出来了~是时候梳理清楚JDK的各个版本的特性了JDK18特性讲解

JDK 15安装及新特性介绍

JDK8的新特性