lambda表达式:可以用非常少的代码实现抽象方法。lambda表达式不能独立执行,必须实现函数式接口,并且会返回一个函数式接口的对象
lambda表达式实现函数式接口
函数式接口指的是仅包含一个抽象方法的接口,接口中的方法简单明了地说明了接口的用途,如线程接口Runnable,动作事件监听接口ActionListener等。开发者可以创建自定义的函数式接口。
lambda表达式实现无参抽象方法
例1:打印函数
package com.itheima.Demo;
interface SayHilnterface {
String say();
}
public class text {
public static void main(String[] args) {
//lanbda表达式实现打招呼接口,返回抽象方法结果
SayHilnterface pi = () -> "你好!";
System.out.println(pi.say());
}
}
lambda表达式实现有参抽象方法
例2:实现相加函数
package com.itheima.Demo;
interface AddItionInterface { //加法接口
int add(int a, int b); //加法的抽象方法
}
public class text {
public static void main(String[] args) { //测试类
//lambda表达式实现加法接口,返回参数相加的值
AddItionInterface np = (x, y) -> x + y;
int result = np.add(11, 33); //调用接口方法
System.out.println("结果为" + result); //输出相加的结果
}
}
lambda表达式使用代码块
当l函数接口的抽象方法需要实现复杂的逻辑而不是返回一个简单的表达式的话,就需要在lambda表达式中使用代码块。
例3:对考试成绩进行分类
package com.itheima.Demo;
interface CheckGrade {
String check(int grade);
}
public class text {
public static void main(String[] args) {
CheckGrade g = (grade) -> { //lambda表达式实现代码块
if (grade >= 90 && grade <= 100) {
return "优秀";
} else if (grade >= 80 && grade <= 89) {
return "中等";
} else if (grade >= 70 && grade <= 79) {
return "良好";
} else if (grade >= 60 && grade <= 69) {
return "及格";
} else {
return "再接再厉";
}
};
System.out.println(g.check(100));
}
}