Lambda表达式,也可以称为闭包,它时推动Java8发布的最重要新特性。
从策划到设计制作,每一步都追求做到细腻,制作可持续发展的企业网站。为客户提供成都网站建设、成都网站设计、网站策划、网页设计、域名申请、网络空间、网络营销、VI设计、 网站改版、漏洞修补等服务。为客户提供更好的一站式互联网解决方案,以客户的口碑塑造优易品牌,携手广大客户,共同发展进步。Lambda运行把函数作为一个方法的参数,使代码变得更加简介紧凑。
1.Lambda表达式格式: ->:Lambda操作符
左边是Lambda形参列表,也就是接口中抽象方法的形参列表。
右边是Lambda体,也就是重写的抽象方法的方法体。
2.Lambda表达式的使用形式有6种 2.1语法格式一:无参,无返回值@Test
public void test0(){Runnable r1 = new Runnable() {@Override
public void run() {System.out.println("I love you.");
}
};
r1.run();
System.out.println("*****************");
Runnable r2 = () ->System.out.println("I love yy.");//Lambda表达式
r2.run();
}
2.2语法格式二:Lambda需要一个参数,但没有返回值@Test
public void test2(){Consumercon = new Consumer() {@Override
public void accept(String s) {System.out.println(s);
}
};
con.accept("I love you not because of who you are, but because of who I am when I am with you.");
System.out.println("****************");
Consumercon1 = (String s) ->{System.out.println(s);
};
con1.accept("Just because someone doesn't love you the way you want them to, doesn't mean they don't love you with all they have.");
}
2.3语法格式三:数据类型可以省略,因为可由编译器推断得出(类型推断,泛型的时候也是如此)@Test
public void test3(){Consumercon = new Consumer() {@Override
public void accept(String s) {System.out.println(s);
}
};
con.accept("No man is worth your tears, and the one who is won't make you cry.");
System.out.println("****************");
Consumercon1 = (s) ->{System.out.println(s);
};
con1.accept("Never frown, even when you are sad.");
}
2.4语法格式四:Lambda若自需要一个参数时,参数的小括号可以省略@Test
public void test4(){Consumercon = new Consumer() {@Override
public void accept(String s) {System.out.println(s);
}
};
con.accept("Don't cry because it is over.");
System.out.println("****************");
Consumercon1 = s ->{System.out.println(s);
};
con1.accept("Smile because it happened, life is a pure flame, and i love you always.");
}
2.5语法格式五:Lambda需要两个或以上的参数,多条执行语句,并且可以有返回值@Test
public void test1(){Comparatorcom1 = new Comparator() {@Override
public int compare(Integer o1, Integer o2) {System.out.println(o1);
System.out.println(o2);
return o1.compareTo(o2);
}
};
int compare1 = com1.compare(12,21);
System.out.println(compare1);//-1
System.out.println("****************");
//lambda表达式
Comparatorcom2 = (o1,o2)->{System.out.println(o1);
System.out.println(o2);
return o1.compareTo(o2);
};
int compare2 = com2.compare(32,21);
System.out.println(compare2);//1
//方法引用
Comparatorcom3 = Integer ::compare;
int compare3 = com3.compare(32,21);
System.out.println(compare3);//1
}
2.6语法格式六:Lambda体只有一条执行语句时,return与大括号若有,都可以省略@Test
public void test5(){Comparatorcom1 = new Comparator() {@Override
public int compare(Integer o1, Integer o2) {return o1.compareTo(o2);
}
};
int compare1 = com1.compare(12,21);
System.out.println(compare1);//-1
System.out.println("****************");
//lambda表达式
Comparatorcom2 = (o1,o2)->o1.compareTo(o2);
int compare2 = com2.compare(32,21);
System.out.println(compare2);//1
}
2.7Lambda表达式总结:->左边:lambda 形参列表的参数类型可以省略(类型推断):如果lambda形参列表只有一个参数,可以省略小
括号。
->右边:lambda 体应该使用一对{}包裹,如果lambda只有一条执行语句,包含return语句,可以省略大括号。
3.Lambda表达式的本质:作为接口的实例,该接口应当为函数式接口(FunctionalInterface),只有一种抽象方法。你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧