Java基础——lambda表达式

本文详细介绍了lambda表达式的基本概念、使用方法、省略模式以及与匿名内部类的区别,重点讲解了如何在多线程、函数接口和带参操作中应用lambda。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.函数式编程思想(lambda表达式)

函数式思想强调“必须通过对象的形式来做事情
lambda表达式格式:()-> {}

  • ():可看成方法形参
  • ->用箭头指向代码块
  • {代码块}
    使用前提:1.有一个接口2.接口中有且只有一个抽象方法
public class Test9 {
    //通过匿名内部类的方法
   public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("多线程启动了");
            }
        }).start();
       //可以改写为lamb-da
       new Thread( ()-> {
           System.out.println("多线程启动了");
       }).start();
    }

} 
//代参
public class FlyableDemo {
    public static void main(String[] args) {
        /*useFlyable(new Flyable() {
            @Override
            public void fly(String s) {
                System.out.println(s+"可以飞");
            }
        });*/
        useFlyable((String s)->{
            System.out.println(s+"可以飞");
        });
    }
    public static void useFlyable(Flyable f){
        f.fly("UAV");
    }
}
//带参带返回
public class AddableDemo {
    public static void main(String[] args) {
        /*useAddable(new Addable() {
            @Override
            public int add(int x, int y) {
                int sum = x + y;
                return sum;
            }
        });*/
        useAddable((int x,int y)->{
            int num = x + y;
            return num;
        });
    }
    private static void useAddable(Addable a){
        System.out.println(a.add(1,2));
    }
}

2.lambda表达式省略模式

  1. 参数的类型可以省略,但是有多个参数的情况下不能只省略一个
  2. 如果参数有且仅有一个,可以省略小括号
  3. 如果代码块的语句只有一条,可以省略分号,大括号,如果有return,return也要省略掉
public class FlyableDemo {
    public static void main(String[] args) {
        useFlyable(s -> System.out.println(s+"可以飞"));
    }
    public static void useFlyable(Flyable f){
        f.fly("UAV");
    }
}

2.lambda表达式注意事项

  • 使用Lambda表达式必须要接口,且有且只有一个抽象函数
  • 必须有上下文环境(
    -根据局部变量的赋值可得知lambda对应接口:Runnable = ()->System.out.println(“Lambda表达式”));
    -根据调用方法的参数得知Lambda对应的接口:new Thread(()->System.out.println(“Lambda表达式”)).start();

3.lambda表达式与匿名内部类的区别

匿名内部类:允许抽象类具体类和接口;允许多个抽象类方法;匿名内部类编码后会生成字节码文件
lambda表达式:只允许接口;只允许接口只拥有一个抽象方法;实现原理不同,编译后不会生成字节码文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值