java--Lambda (3)变量的访问

简介: 学习使用在Lambda表达式,有些地方访问一些变量访问不到,有些地方可以访问却不能改变,有些地方既可以访问还可以修改实用,所以记录一下。

@[TOC]

0 写在前面

学习使用在Lambda表达式,有些地方访问一些变量访问不到,有些地方可以访问却不能改变,有些地方既可以访问还可以修改实用,所以记录一下。
Lambda 表达式可以读写实例变量,只能读取局部变量

1 可以直接在 Lambda 表达式中访问外层的局部变量

一般来说是访问不到的,但是在 Lambda 表达式中可以直接访问外层的局部变量,但是这个局部变量必须是声明为 final 的。就可以访问到了

        final int delta = 10;
        BinaryOperator<Integer> add = (x, y) -> x+y+delta;
        Integer apply = add.apply(1, 2);//结果是13
        System.out.println(apply);//输出13

如果这个变量是一个既成事实上的 final 变量的话,就可以不使用 final 关键字,这个地方有一些抽象,所以可以自习理解一下。
例如在上面代码块中把final去掉:

        int delta = 10;
        BinaryOperator<Integer> add = (x, y) -> x+y+delta;
        Integer apply = add.apply(1, 2);//结果是13
        System.out.println(apply);//输出13

都是可以的。

2 在 Lambda 表达式当中被引用的变量的值不可以被更改

在idea编译器中可以看到,上面这段代码是不会报错的。在这里插入图片描述
但是如果,我在代码中某处改变了已经被引用的,就会编译报错:
在这里插入图片描述
可以看一下报错信息,所以应当引用值不能被改变。

3 在 Lambda 表达式当中不允许声明一个与局部变量同名的参数或者局部变量

在这里插入图片描述

就是说,不许同名。

4 写在最后

这个变量的访问与修改只知道这么多,再具体点就像茶壶煮饺子,有知识但是写不出来。
本人的水平还是太低了,如果以后提高了会在进行补充。

相关文章
|
25天前
|
Java 开发工具
【Azure Storage Account】Java Code访问Storage Account File Share的上传和下载代码示例
本文介绍如何使用Java通过azure-storage-file-share SDK实现Azure文件共享的上传下载。包含依赖引入、客户端创建及完整示例代码,助你快速集成Azure File Share功能。
305 4
|
3月前
|
存储 安全 Java
java: 无法访问org.springframework.ldap.core.LdapTemplate
java: 无法访问org.springframework.ldap.core.LdapTemplate
121 9
|
5月前
|
缓存 Java 数据库
Java 访问修饰符使用方法与组件封装方法详细说明
本文详细介绍了Java中访问修饰符(`public`、`private`、`protected`、默认)的使用方法,并结合代码示例讲解了组件封装的核心思想与实现技巧。内容涵盖数据封装、继承扩展、模块化设计与接口隔离等关键技术点,帮助开发者提升代码的可维护性与安全性,适用于Java初学者及进阶开发者学习参考。
128 1
|
8月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
141 13
|
8月前
|
存储 算法 安全
Java对象创建和访问
Java对象创建过程包括类加载检查、内存分配(指针碰撞或空闲列表)、内存初始化、对象头设置及初始化方法执行。访问方式有句柄和直接指针两种,前者稳定但需额外定位,后者速度快。对象创建涉及并发安全、垃圾回收等机制。
107 0
Java对象创建和访问
|
8月前
|
存储 传感器 缓存
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
258 15
|
10月前
|
NoSQL JavaScript 前端开发
Java访问MongoDB
Java访问MongoDB
144 21
|
10月前
|
Java Linux iOS开发
如何配置 Java 环境变量:设置 JAVA_HOME 和 PATH
本文详细介绍如何在Windows和Linux/macOS系统上配置Java环境变量。
11985 12
|
10月前
|
SQL Java 数据库连接
【潜意识Java】深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
1528 1