• java中Lambda基础语法


    知识点:Lambda基础语法

      (一)Lambda表达式简化匿名内部类的使用

    public static void main(String[] args) {
    //匿名内部类
    Comparator<Integer> com=new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
    return Integer.compare(o1,o2);
    }
    };
    //Lambda表达式
    Comparator<Integer> com1=(x1,x2)-> Integer.compare(x1,x2);
    System.out.println(com1.compare(2,1));
    }

    (二)Lambda表达式的基本语法
    //一:Lambda基本语法
    /*Java8引入箭头操作符"->"将lambda分成左右两个部分
    左侧:Lambda 表达式的参数列表
    右侧:Lambda 表达式所执行的功能

    语法格式一:无参数,无返回值
    () -> System.out.println("Lambda体");

    语法格式二:有一个参数,无返回值
    (x) -> System.out.println(x);

    语法格式三:左侧只有一个参数,小括号可以省略不写
    x -> System.out.println(x);

    语法格式四:有两个以上参数,有返回值,并且Lambda 体中有多条语句
    Comparator<Integer> com=(x,y)->{
    System.out.println("函数式接口");
    return Integer.compare(x,y);
    };

    语法格式五:若右侧Lambda体中,只有一条语句,return 和大括号都可以省略不写
    Comparator<Integer> com1=(x,y)->Integer.compare(x,y);

    语法格式六:Lambda 表达式的参数列表的数据类型可以省略不写,jvm编译器会进行上下文推断出,数据类型 “类型推断”
    (Integer x,Integer y) -> Integer.compare();
    */

    //二:Lambda 表达式需要 “函数式接口”的支持
    /* 函数式接口
    接口中只有一个抽象方法的接口,称为函数式接口,可以使用注解@FunctionalInterface修饰
    可以检查该接口是不是函数式接口
    */
    import org.junit.Test;
    import java.util.Comparator;
    import java.util.function.Consumer;
    public class test {
    @Test
    public void test1(){
    Runnable r=new Runnable() {
    @Override
    public void run() {
    System.out.println("Lambda体"+num);
    }
    };
    r.run();

    System.out.println("----------------------------");
    Runnable r1=()->System.out.println("Lambda体"+num);
    r1.run();

    System.out.println("-------------------------------");
    Consumer<String> con=(x)-> System.out.println(x);
    con.accept("参数");

    System.out.println("--------------------------------");

    Comparator<Integer> com=(x,y)->{
    System.out.println("函数式接口");
    return Integer.compare(x,y);
    };
    System.out.println(com.compare(20,10));

    System.out.println("------------------------------");
    Comparator<Integer> com1=(x,y)->Integer.compare(x,y);
    System.out.println(com1.compare(20,39));
    }
    }
     
  • 相关阅读:
    浅谈iOS的SDK与API
    ulua-应用层模块编码
    ErlangRoad_2
    ErlangRoad_1
    Git笔记--git使用基本概念和术语
    小米Pro 15.6 系统重装记录
    Ubuntu14.04安装opencv2.4.13
    ubuntu配置机器学习环境(四) 安装intel MKL
    ubuntu配置机器学习环境(三) opencv 安装
    ubuntu配置机器学习环境(二) cuda 和cudnn 安装
  • 原文地址:https://www.cnblogs.com/shuaifing/p/12158064.html
Copyright © 2020-2023  润新知