1.Lambda
1.1.定义
Lambda是一个匿名函数,我们把Lambda表达式理解为是一段可以传递的代码。
1.2.基础语法
JAVA8引入了一个新的操作符号”->”,该操作符成为箭头操作符或Lambda操作符。
箭头操作符将Lambda表达式拆为了两个部分: 左侧:Lambda表达式的参数列表。 右侧:Lambda表达式的所需执行的功能,即Lambda体。
1.2.1.语法格式一
无参数,无返回值。() -> System.out.println("xxxxx")
1.2.2.语法格式二
有一个参数,无返回值。(t) -> System.out.println(t)
1.2.3.语法格式三
若只有一个参数,小括号可以省略不写。t -> System.out.println(t)
1.2.4.语法格式四
有两个以上的参数,有返回值,并且Lambda体中有多条语句。
Comparator<Integer> com = (x, y) -> {
System.out.println("函数式接口");
return Integer.compare(x, y);
}
1.2.5.语法格式五
若Lambda体中只有一条语句,return和大括号都可以省略不写。Comparator<Integer> com = (x, y) -> Integer.compare(x, y)
1.2.6.语法格式六
参数列表的数据类型可以忽略不写,因为JVM编译器通过上下文推断出数据类型,即“类型推断”。(Integer x, Integer y) -> Integer.compare(x, y)
1.3.函数式接口
只有一个抽象方法的接口。 可以使用@FunctionalInterface修饰,检查是否函数式接口。
1.4.练习题
- 调用 Collertions.sort() 方法,通过定制排序比较两不 Emplovee (先按年龄比,年龄相同按姓名比),使用 Lambda 作为参数传递。
- a.声明函数式接口,接口中声明抽象方法,public string getvalue(string str);
b.声明类Testlambda,类中编写方法使用接口作为参数,将一个字符串转换成大写,并作为方法的返回值。
c.再将一个字符串的第2个和第4个索引位置进行截取子串。,
- a.吉明一个带两个泛型的两数式接口,泛型类型为
丁 为参数,R 为返回值。
b.接口中声明对应抽象方法。
c.在 Testlambda 类中声明方法,使用接口作为参数,计算两个long 型参数的和。
d.再计算两个long 型参数的乘积。