Lambad表达式

学习内容:

1.简单的一些语法入门

public class lambda {
    public static void main(String[] args) {
       //无参方法
        LamImp1 aa1=()->{
            System.out.println("riasd");
        };
        //有参数方法
        aa1.lambade1();
        LamImp2  aa2=(int a,int c)->{
            System.out.println(a+c);
        };
        aa2.lambade2(12,32);
        //有返回值方法
        LamImp3 aa3=(int a,int b)->{
            return a+b;
        };
        System.out.println(aa3.lambade3(15, 12));
 }
 }
  interface LamImp1 {
    //    接口定义一个lambade无参数方法
    void lambade1();
      
}
 interface LamImp2 {
    //    接口定义一个lambade有参数方法
    void lambade2(int a,int c);
}
interface LamImp3 {
    //    接口定义一个lambade有参数方法
    int lambade3(int a,int c);
}

表达式精简语法初级

1.可以把参数的类型进行省略

2.假如只有一个参数小括号也能省

3.如果方法体只有一条语句,大括号也能省略,但是return除外

4.假如方法体只有return一条语句,return也能省路

package com.lianxi.lambda;

public class lambda {
    public static void main(String[] args) {
       //无参方法
        LamImp1 aa1=()-> System.out.println("riasd");
        //有参数方法
        aa1.lambade1();
        LamImp2  aa2=(a,c)-> System.out.println(a+c);
        aa2.lambade2(12,32);
        //有返回值方法两个参数
        LamImp3 aa3=(a,b)-> a+b;
       System.out.println(aa3.lambade3(15, 12));
       //有返回只有一个参数
        LamImp4 aa=a -> a;
       System.out.println(aa.lambade4(3));

 }
 }
  interface LamImp1 {
    //    接口定义一个lambade无参数方法
    void lambade1();

}
 interface LamImp2 {
    //    接口定义一个lambade有参数方法
    void lambade2(int a,int c);
}
interface LamImp3 {
    //    接口定义一个lambade有参数方法
    int lambade3(int a,int c);
}
interface LamImp4 {
    //    接口定义一个lambade有参数方法
    int lambade4(int a);
}

3.方法引用

其实我也很想知道为啥不直接类名.方法引用,我看看只能说Java是面向接口编程

package com.lianxi.lambda;

public class lambda   {
    public static void main(String[] args) {
        //方法非静态 需要先new类型名 然后才类名::方法
        lambda lambda1 = new lambda();
        Lam lam=lambda1::fangfa1;
        lam.fangfa(55); // 理解为fangfa内心想的是fangfa1

        //静态直接类名::方法就行
        Lam lam1=lambda::fangfa2; ;
        lam1.fangfa(69);
    }
    //无需太过注重是否和接口中的方法名称一样
    //只要理解成接口中的方法是套着羊皮的狼就行
     public void fangfa1(int a) {
        System.out.println("我爱Java");

     }

    public static void fangfa2(int a) {
        System.out.println("我爱Java");
   }

}
 interface Lam{
     void fangfa(int a);
}

4.构造器引用

 //格式 接口  变量= 构造器名称::new

package com.lianxi.lambda;

public class lambda   {
    public static void main(String[] args) {
     //格式 接口  变量= 构造器名称::new
        Lam a=Dog::new;
      System.out.println(a.getDog());
      Lam1 a1=Dog::new;
        System.out.println(a1.getDog("小狗",12));
    }
  }
  interface Lam{
     Dog getDog();
  }
  interface Lam1{
    Dog getDog(String A,int B);
  }

5.@FunctionalInterfacezhu

注意:

1.接口只能有一个抽象方法

2.允许定义静态和默认方法

3.该注解不是必须的,如果符合函数是接口,加与不加都是没影响的,加上能更好的让编译器进行检查,如果不是加上了编译器会报错


学习时间:

提示:这里可以添加计划学习的时间

例如:

  • 周一至周五晚上 7 点—晚上9点
  • 周六上午 9 点-上午 11 点
  • 周日下午 3 点-下午 6 点

学习产出:

提示:这里统计学习计划的总量

例如:

  • 技术笔记 2 遍
  • CSDN 技术博客 3 篇
  • 习的 vlog 视频 1 个
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值