22.lambda表达式

  1. 22.lambda表达式
    1. 22.1 知识点
      1. Java中 lambda表达式语法
      2. 用于装载lambda表达式的函数式接口
      3. lambda表达式调用外部变量
      4. 总结
    2. 22.2 知识点代码

22.lambda表达式


22.1 知识点

Java中 lambda表达式语法

基本结构:

(参数)->{代码块}

基于基本结构的写法:

  1. ()->{代码块}
  2. ()->结果表达式(相当于返回值);
  3. (参数)->{代码块}
  4. 参数->{代码块}
  5. 参数->结果表达式(相当于返回值);
  6. (参数1,参数2,参数3...)->{代码块}
  7. (参数1,参数2,参数3...)->结果表达式(相当于返回值);

用于装载lambda表达式的函数式接口

函数式接口 可以理解为java的委托

interface ITest
{
    int Test();
}

interface ITest2
{
    void Test(int a, String str);
}

函数式接口指仅仅包含一个抽象方法的接口。声明函数式接口后,我们可以用以下语法来使用lambda表达式:

ITest t = () ->
{
    int i = 1;
    int i2 = 2;
    return i + i2;
};

System.out.println(t.Test());//3

ITest2 t2 = (a, b) ->
{
    System.out.println(a);
    System.out.println(b);
};

t2.Test(10, "123");//10 123

lambda表达式调用外部变量

public static int value2 = 99;//类的成员变量

int value1 = 10;
t = () ->
{
    //value1 = 100;报错
    value2 = 100;
    return value2;
};
System.out.println(t.Test());//100

总结

Java中的lambda表达式和C#中区别很大。Java中没有委托和事件,只有通过函数式接口来存储lambda表达式来进行使用。


22.2 知识点代码

//函数式接口 可以理解为java的委托
interface ITest
{
    int Test();
}

interface ITest2
{
    void Test(int a, String str);
}

public class Lesson22_lambda表达式
{

    public static int value2 = 99;//类的成员变量

    public static void main(String[] args)
    {
        //知识点1:Java中 lambda表达式语法
        //基本结构:
        //(参数)->{代码块}
        //基于基本结构的写法:
        //1. ()->{代码块}
        //2. ()->结果表达式(相当于返回值);
        //3. (参数)->{代码块}
        //4. 参数->{代码块}
        //5. 参数->结果表达式(相当于返回值);
        //6. (参数1,参数2,参数3...)->{代码块}
        //7. (参数1,参数2,参数3...)->结果表达式(相当于返回值);



        //知识点2:用于装载lambda表达式的函数式接口
        //函数式接口指仅仅包含一个抽象方法的接口
        //声明函数式接口后,我们可以用以下语法来使用lambda表达式
        //接口名 变量名 = lambda表达式
        //注意:
        //lambda表达式的结构必须和函数式接口中声明的方法一致(返回值,参数数量)
        ITest t = () ->
        {
            int i = 1;
            int i2 = 2;
            return i + i2;
        };

        System.out.println(t.Test());//3

        ITest2 t2 = (a, b) ->
        {
            System.out.println(a);
            System.out.println(b);
        };

        t2.Test(10, "123");//10 123



        //知识点3:lambda表达式调用外部变量
        //1.无法更改局部变量的值
        //2.可以更改外部类的成员变量的值
        int value1 = 10;
        t = () ->
        {
            //value1 = 100;报错
            value2 = 100;
            return value2;
        };
        System.out.println(t.Test());//100



        //总结
        //Java中的lambda表达式和C#中区别很大
        //Java中没有委托和事件
        //只有通过函数式接口来存储lambda表达式来进行使用
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏