zoukankan      html  css  js  c++  java
  • Java之lambda表达式

    一、lambda表达式的写法

    package test;
    
    //构造线程的两种方式:1、实现Runnable接口  2、继承Thread类
    public class Test14 {
        public static void main(String[] args) {
            Thread thread = new Thread(new MyThread());
            thread.start();
    
            Thread t2 = new Thread(new Runnable() { //匿名内部类
                public void run() {
                    System.out.println("run2");
                }
            });
            t2.start();
    
            //lambda表达式
            //使用条件:
            //1、花括弧里面必须传的是接口
            //2、接口里只能有一个方法
            //()里代表的是 接口里面的抽象方法传的参数,没有就写()
            //箭头后面的是 抽象方法的内容
            Thread t3 = new Thread(() -> { //传的是接口
                    System.out.println("run3");
                }
            );
            t3.start();
        }
    
    }
    class MyThread implements Runnable{
    
        public void run() {
            System.out.println("run");
        }
    }

    lambda表达式是匿名内部类的简写,匿名内部类是new Thread()对象的简写。

    二、lambda表达式的使用条件

    1、花括弧里面必须传的是接口

    2、接口里只能有一个方法

     

    三、lambda表达式写法的含义

    • ()里代表的是 接口里面的抽象方法传的参数,没有就写()
    • 箭头后面的是 抽象方法的内容
      Thread t3 = new Thread( () -> { //传的是接口
                      System.out.println("run3");
                  }
      );

    四、lambda表达式的简写

    • 如果花括弧里的表达式只有一个,可以不写花括弧,直接写表达式

    • 如果接口的参数只有一个,就可以省略小括弧,直接写参数

    public class Test15 {
        int x = 3;
        int y = 4;
        public static void aoo(Aoo aoo){
            int z =aoo.f(3,4);
            System.out.println(z);
        }
        public static void boo(Boo boo){
            int z =boo.g(3);
            System.out.println(z);
        }
    
        public static void main(String[] args){
            aoo(new Aoo() { //匿名内部类
                @Override
                public int f(int x, int y) {
                    return x*y;
                }
            });
    
            aoo((x,y) -> { //使用lambda表达式
                return x+y;
            });
    
            aoo((x,y) -> x+y+1); //lambda表达式简写,如果花括弧里的表达式只有一个,可以不写花括弧,直接写表达式
            boo(x -> x+3); //lambda表达式简写,如果接口的参数只有一个,就可以省略小括弧,直接写参数
        }
    }
    interface Aoo{
        int f(int x,int y);
    }
    interface Boo{
        int g(int x);
    }

    五、tips小技巧

    使用IntelliJ IDEA这个工具写lambda表达式,如果写的正确,会出现特有标志:

     

  • 相关阅读:
    42. Trapping Rain Water
    223. Rectangle Area
    645. Set Mismatch
    541. Reverse String II
    675. Cut Off Trees for Golf Event
    安装 VsCode 插件安装以及配置
    向上取整 向下取整 四舍五入 产生100以内随机数
    JS 判断是否为数字 数字型特殊值
    移动端初始配置,兼容不同浏览器的渲染内核
    Flex移动布局中单行和双行布局的区别以及使用
  • 原文地址:https://www.cnblogs.com/yanwuliu/p/11134710.html
Copyright © 2011-2022 走看看