22.lambda表达式
22.1 知识点
Java中 lambda表达式语法
基本结构:
(参数)->{代码块}
基于基本结构的写法:
()->{代码块}
()->结果表达式(相当于返回值);
(参数)->{代码块}
参数->{代码块}
参数->结果表达式(相当于返回值);
(参数1,参数2,参数3...)->{代码块}
(参数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