当前位置: 首页 > news >正文

咸阳专业网站建设2022年搜索引擎优化指南

咸阳专业网站建设,2022年搜索引擎优化指南,做网站首页的软件,wordpress博客免费主题我们了解了 java Lambda 的概念并可以在匿名类的场合使用 Lambda 语法进行简单替换。本节主要介绍在 Java 中如何使用 Lambda 表达式。 作为参数使用Lambda表达式 Lambda 表达式一种常见的用途就是作为参数传递给方法,这需要声明参数的类型声明为函数式接口类型。…

我们了解了 java Lambda 的概念并可以在匿名类的场合使用 Lambda 语法进行简单替换。本节主要介绍在 Java 中如何使用 Lambda 表达式。

作为参数使用Lambda表达式

Lambda 表达式一种常见的用途就是作为参数传递给方法,这需要声明参数的类型声明为函数式接口类型。示例代码如下:

 
  1. public static void main(String[] args) {
  2. int n1 = 10;
  3. int n2 = 5;
  4. // 打印加法计算结果
  5. display((a, b) -> {
  6. return a + b;
  7. }, n1, n2);
  8. // 打印减法计算结果
  9. display((a, b) -> a - b, n1, n2);
  10. }
  11. /**
  12. * 打印计算结果
  13. *
  14. * @param calc Lambda表达式
  15. * @param n1 操作数1
  16. * @param n2 操作数2
  17. */
  18. public static void display(Calculable calc, int n1, int n2) {
  19. System.out.println(calc.calculateInt(n1, n2));
  20. }

上述代码第 19 行定义 display 打印计算结果方法,其中参数 calc 类型是 Calculable,这个参数即可以接收实现 Calculable 接口的对象,也可以接收 Lambda 表达式,因为 Calculable 是函数式接口。 代码第 7 行和第 9 行两次调用 display 方法,它们第一个参数都是 Lambda 表达式。

访问变量

Lambda 表达式可以访问所在外层作用域定义的变量,包括成员变量和局部变量。

访问成员变量

成员变量包括实例成员变量和静态成员变量。在 Lambda 表达式中可以访问这些成员变量,此时的 Lambda 表达式与普通方法一样,可以读取成员变量,也可以修改成员变量。

 
  1. public class LambdaDemo {
  2. // 实例成员变量
  3. private int value = 10;
  4. // 静态成员变量
  5. private static int staticValue = 5;
  6. // 静态方法,进行加法运算
  7. public static Calculable add() {
  8. Calculable result = (int a, int b) -> {
  9. // 访问静态成员变量,不能访问实例成员变量
  10. staticValue++;
  11. int c = a + b + staticValue;
  12. // this.value;
  13. return c;
  14. };
  15. return result;
  16. }
  17. // 实例方法,进行减法运算
  18. public Calculable sub() {
  19. Calculable result = (int a, int b) -> {
  20. // 访问静态成员变量和实例成员变量
  21. staticValue++;
  22. this.value++;
  23. int c = a - b - staticValue - this.value;
  24. return c;
  25. };
  26. return result;
  27. }
  28. }

LambdaDemo 类中声明一个实例成员变量 value 和一个静态成员变量 staticValue。此外,还声明了静态方法 add(见代码第 8 行)和实例方法 sub(见代码第 20 行)。add 方法是静态方法,静态方法中不能访问实例成员变量,所以代码第 13 行的 Lambda 表达式中也不能访问实例成员变量,也不能访问实例成员方法。

sub 方法是实例方法,实例方法中能够访问静态成员变量和实例成员变量,所以代码第 23 行的 Lambda 表达式中可以访问这些变量,当然实例方法和静态方法也可以访问。当访问实例成员变量或实例方法时可以使用 this,如果不与局部变量发生冲突情况下可以省略 this。

访问局部变量

对于成员变量的访问 Lambda 表达式与普通方法没有区别,但是访问局部变量时,变量必须是 final 类型的(不可改变)。

示例代码如下:

 
  1. public class LambdaDemo {
  2. // 实例成员变量
  3. private int value = 10;
  4. // 静态成员变量
  5. private static int staticValue = 5;
  6. // 静态方法,进行加法运算
  7. public static Calculable add() {
  8. // 局部变量
  9. int localValue = 20;
  10. Calculable result = (int a, int b) -> {
  11. // localValue++;
  12. // 编译错误
  13. int c = a + b + localValue;
  14. return c;
  15. };
  16. return result;
  17. }
  18. // 实例方法,进行减法运算
  19. public Calculable sub() {
  20. // final局部变量
  21. final int localValue = 20;
  22. Calculable result = (int a, int b) -> {
  23. int c = a - b - staticValue - this.value;
  24. // localValue = c;
  25. // 编译错误
  26. return c;
  27. };
  28. return result;
  29. }
  30. }

上述代码第 10 行和第 23 行都声明一个局部变量 localValue,Lambda 表达式中访问这个变量,如代码第 14 行和第 25 行。不管这个变量是否显式地使用 final 修饰,它都不能在 Lambda 表达式中修改变量,所以代码第 12 行和第 26 行如果去掉注释会发生编译错误。

Lambda 表达式只能访问局部变量而不能修改,否则会发生编译错误,但对静态变量和成员变量可读可写。

方法引用

方法引用可以理解为 Lambda 表达式的快捷写法,它比 Lambda 表达式更加的简洁,可读性更高,有很好的重用性。如果实现比较简单,复用的地方又不多,推荐使用 Lambda 表达式,否则应该使用方法引用。

Java 8 之后增加了双冒号::运算符,该运算符用于“方法引用”,注意不是调用方法。“方法引用”虽然没有直接使用 Lambda 表达式,但也与 Lambda 表达式有关,与函数式接口有关。 方法引用的语法格式如下:

ObjectRef::methodName 

其中,ObjectRef 是类名或者实例名,methodName 是相应的方法名。

注意:被引用方法的参数列表和返回值类型,必须与函数式接口方法参数列表和方法返回值类型一致,示例代码如下。

 
  1. public class LambdaDemo {
  2. // 静态方法,进行加法运算
  3. // 参数列表要与函数式接口方法calculateInt(int a, int b)兼容
  4. public static int add(int a, int b) {
  5. return a + b;
  6. }
  7. // 实例方法,进行减法运算
  8. // 参数列表要与函数式接口方法calculateInt(int a, int b)兼容
  9. public int sub(int a, int b) {
  10. return a - b;
  11. }
  12. }

LambdaDemo 类中提供了一个静态方法 add,一个实例方法 sub。这两个方法必须与函数式接口方法参数列表一致,方法返回值类型也要保持一致。

 
  1. public class HelloWorld {
  2. public static void main(String[] args) {
  3. int n1 = 10;
  4. int n2 = 5;
  5. // 打印加法计算结果
  6. display(LambdaDemo::add, n1, n2);
  7. LambdaDemo d = new LambdaDemo();
  8. // 打印减法计算结果
  9. display(d::sub, n1, n2);
  10. }
  11. /**
  12. * 打印计算结果
  13. *
  14. * @param calc Lambda表达式
  15. * @param n1 操作数1
  16. * @param n2 操作数2
  17. */
  18. public static void display(Calculable calc, int n1, int n2) {
  19. System.out.println(calc.calculateInt(n1, n2));
  20. }
  21. }

代码第 18 行声明 display 方法,第一个参数 calc 是 Calculable 类型,它可以接受三种对象:Calculable 实现对象、Lambda 表达式和方法引用。代码第 6 行中第一个实际参数LambdaDemo::add是静态方法的方法引用。代码第 9 行中第一个实际参数d::sub,是实例方法的方法引用,d 是 LambdaDemo 实例。

提示:代码第 6 行的LambdaDemo::add和第 9 行的d::sub是方法引用,此时并没有调用方法,只是将引用传递给 display 方法,在 display 方法中才真正调用方法。

http://www.hkea.cn/news/363420/

相关文章:

  • 商品房建设信息网站googleplay商店
  • 菏泽 网站建设优化工具箱
  • 网站建设找哪家公司百度搜索热度
  • 网页设计论文引言北海百度seo
  • 网站空间哪家做的好网络营销的常用工具
  • 网站开发具体问题优化营商环境
  • wordpress4.5 火车头廊坊seo培训
  • 怎么做多个网站单点登录艺考培训
  • 网站怎么做双语种seo关键词如何设置
  • 用java做的游戏下载网站有哪些内容成都网络推广优化
  • 慈溪市网站建设google官网
  • 网站建设计划seo网站排名优化软件是什么
  • 大连网站建设谁家好郴州网站定制
  • 网站建设背景怎么写一个企业该如何进行网络营销
  • 为女朋友做的表白网站百度大数据分析工具
  • 上海高端网站建设服务公seo推广公司
  • 找人合伙做网站平台仿站定制模板建站
  • 深圳市网站建设科技公司腾讯网网站网址
  • wordpress语言文件夹seo销售好做吗
  • 河北建设集团官网西安网站seo
  • 在外汇局网站做登记报告恢复原来的百度
  • 做外贸做的很好的网站全国疫情突然又严重了
  • 开发app需要什么样的团队百度seo优化培训
  • ftp上传网站之后软文什么意思范例
  • 询广西南宁网站运营推广系统
  • wordpress侧边栏小工具佛山网站优化
  • 用vs做网站原型企业培训课程有哪些内容
  • wordpress评论自定义百度刷排名seo
  • 四川建设网官网登录入口泉州seo外包
  • 网站有备案 去掉备案网络营销意思