zoukankan      html  css  js  c++  java
  • 43.Lambda表达式

    1.概述

    2.体验lambda

        public static void main(String[] args) {
            //匿名内部类启动线程
            new Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.println("匿名内部类的方式启动线程");
                }
            }).start();
            //    lambda表达式启动线程
            new Thread(() ->{
                System.out.println("lambda表达式的方式启动线程");
            }).start();
        }

    3.lambda表达式标准格式

     

     4.Lambda表达式练习

    练习1(接口抽象方法没有参数):

    public interface Eatable {
    public abstract void eat();
    }
    public class EatableImpl implements Eatable {
        @Override
        public void eat() {
            System.out.println("吃东西");
        }
    }
    public class EatableDemo {
        public static void main(String[] args) {
            //1.创建接口实现类对象实现调用eat()方法
            EatableImpl eatable = new EatableImpl();
            useEatable(eatable);
    //        2.创建接匿名内部类实现调用eat()方法
            useEatable(new Eatable() {
                @Override
                public void eat() {
                    System.out.println("吃东西");
                }
            });
    //        3.Lambda表达式实现调用eat()方法
            useEatable(() -> {//"()"就代表Eatable接口里面唯一的抽象方法:eat();因为eat()不需要参数,所以()也没有参数
                System.out.println("吃东西");
            });
        }
    
        private static void useEatable(Eatable e) {
            e.eat();
        }
    }

    练习2(接口抽象方法带形参):

    public interface Fly {
        void fly(String s);
    }
    public class FlyDemo {
        public static void main(String[] args) {
            flyTo(new Fly() {
                @Override
                public void fly(String s) {
                    System.out.println("我要飞到" + s);//我要飞到北京
                }
            });
            flyTo((String s) -> {
                System.out.println("我要飞到" + s);
            });
        }
    
        private static void flyTo(Fly fly) {
            fly.fly("北京");
        }
    }

    练习3(接口抽象方法带形参,且有返回值):

    public interface Add {
        int add(int a,int b);
    }
    
    public class AddDemo {
        public static void main(String[] args) {
             addDo(new Add() {
                @Override
                public int add(int a, int b) {
                    return a + b;
                }
            });
            addDo((int a, int b) -> {
                return a + b;
            });
    
        }
    
        private static void addDo(Add add){
             int sum=add.add(1,2);
             System.out.println(sum);//3
    
        }
    }

    5.Lambda表达式省略模式

    public interface Fly {
        void fly(String s);
    }
    public interface Add {
        int add(int a,int b);
    }
    public class Demo {
        public static void main(String[] args) {
             addDo(new Add() {
                @Override
                public int add(int a, int b) {
                    return a + b;
                }
            });
            addDo((int a, int b) -> {
                return a + b;
            });
    //        1.参数类型可以省略,但是多个参数的时候,不能只省略一个参数的类型
            addDo((a,b)->{
                return a+b;
            });
    //        2.如果参数只要一个,那么小括号可以省略
            flyTo(new Fly() {
                @Override
                public void fly(String s) {
                    System.out.println("我要飞到:"+s);
                }
            });
            flyTo(s->{
                System.out.println("我要飞到:"+s);
            });
    //        3.如果代码块的语句只有一条,可以省略大括号和分号,如果是return语句,要省略return;
            flyTo(s-> System.out.println("我要飞到"+s));
            addDo((a,b)->a+b);
        }
    
        private static void addDo(Add add){
             int sum=add.add(1,2);
             System.out.println(sum);
        }
        public static void flyTo(Fly fly){
            fly.fly("北京");
        }
    }

    6.Lambda表达式注意事项

    6.Lambda表达式和匿名内部类的区别

     

  • 相关阅读:
    (转载)Java读取ipa中info.plist获取版本信息
    (转)使用Eclipse开发Android源码
    IOS端的摇一摇功能
    (转) 自动编译iOS工程,生成app及ipa文件的方法
    Mac OS 上设置 JAVA_HOME
    macjava
    JS超级酷的导航菜单代码
    JavaScript+Css实现的鼠标悬停时动态翻滚的紫色菜单导航
    全国的省市县联动代码
    【荐】JavaScript制作可伸缩的淡绿色菜单导航
  • 原文地址:https://www.cnblogs.com/luzhanshi/p/13198626.html
Copyright © 2011-2022 走看看