Lambda表达式
lambda 表达式是在Java8 中引入的 。 lambda表达式是一个可以传递的代码块 , 可以在以后执行一次或者多次 。
简洁语法 , 函数式编程(Java中以对象为基础 , 如果想要传递一个代码块x , 需要在传递的对象中的包含某种方法中囊括这些代码块 , 解决此问题)避免匿名内部类定义过多 , 简化代码 。
lambda表达式形式表达式形式: (参数) , 箭头(->)表达式
exp:
Comparator<String> comparator = (String s1 String s2 )->{
if (s1.length() > s2.length()) {
return 1;
else if (s1.length() == s2.length()) {
return 0;
else {
return -1;
;
- 如果lambda没有参数 其中的 ()不能省略
System.out.println(\"abc\");
;
- 如果lambda表达式的参数类型可以由编译器推导出 , 可以忽略参数类型定义 。
if (s1.length() > s2.length()) {
return 1;
else if (s1.length() == s2.length()) {
return 0;
else {
return -1;
;
- 如果方法只有一个参数 , 而且这个参数的类型可以推导 , 还可以省略小括号 。
System.out.println(\"Hello\");
;
- 如果方法只有一条语句 , {也可以省略
无需指定lambda表达式的返回类型 , lambda表达式的返回类型由上下文推导得出 。
如果lambda表达式只在某些条件分支有返回值 , 是不合法的 , 也即由上下文推导出的返回值类型必须一致 。
- 错误例子如下:
if (s1.length() > s2.length()) {
return 1;
else if (s1.length() == s2.length()) {
return 0;
;
- 使用lambda表达式:
import java.util.Arrays;
import java.util.Comparator;
import javax.swing.JOptionPane;
import javax.swing.Timer;
public class LambdaTest {
public static void main(String[
args) {
String [
plants = new String[
{
\"Andy\"\"Jacob\" \"xiaoHong\" \"Bob\" \"Cindy\" \"Lucy\" \"David\"
;
// 打印原字符串数组
System.out.println(Arrays.toString(plants));
- 苹果|对标苹果!蔚来手机公司成立:首款手机明年推出,售价或超7000元
- 苹果|下半年最值得关注的旗舰:华为苹果放大招,这款国产新机香爆了!
- 苹果|?“澎湃新闻”是何方神圣?
- 苹果|用过苹果13之后,也算是明白为什么苹果保值率这么高了
- 比 iPhone 贵!苹果神秘新品曝光:今年量产,价格破万
- 芯片|苹果商店里面有哪些冷门却很有意思的APP?
- 小米科技|旗舰新机大汇总,苹果华为小米神仙打架,一加新机抢先登场
- 机械键盘|没有想到!继“踢出”34家中国供应商之后,苹果又传来消息!
- 头戴式电竞耳机作为外设中的一员|rog棱镜s幻头戴式游戏耳机
- 芯片|安卓手机要崛起了,骁龙8Gen2和A16芯片主频曝光,高通超过苹果