Java Shadowing 影子变量 影子声明
如果特定范围(例如内部类或方法定义)中的类型声明(例如成员变量或参数名称)与封闭范围中的另一个声明具有相同的名称,则该声明会隐藏封闭范围中的声明。您不能仅通过名称来引用影子声明。以下示例 ShadowTest 演示了这一点:
public class ShadowTest {public int x = 0;class FirstLevel {public int x = 1;void methodInFirstLevel(int x) {System.out.println("x = " + x);System.out.println("this.x = " + this.x);System.out.println("ShadowTest.this.x = " + ShadowTest.this.x);}}public static void main(String... args) {ShadowTest st = new ShadowTest();ShadowTest.FirstLevel fl = st.new FirstLevel();fl.methodInFirstLevel(23);}
}
以下是此示例的输出:
x = 23
this.x = 1
ShadowTest.this.x = 0
本例定义了三个名为x的变量:ShadowTest类的成员变量、内部类FirstLevel的成员变量、方法methodInFirstLevel中的参数。定义为方法methodInFirstLevel 的参数的变量 x 隐藏了内部类FirstLevel 的变量 x。因此,当您在方法methodInFirstLevel 中使用变量 x 时,它指的是方法参数。要引用内部类 FirstLevel 的成员变量,使用关键字 this 来表示封闭范围:
System.out.println("this.x = " + this.x);
引用通过它们所属的类名包围更大范围的成员变量。例如,以下语句从方法 methodInFirstLevel 访问类 ShadowTest 的成员变量:
System.out.println("ShadowTest.this.x = " + ShadowTest.this.x);
Java Shadowing 影子变量 影子声明相关推荐
- Java数据类型及变量作业_day02、Java变量与数据类型
02_Java变量与数据类型 第二章 变量与数据类型 变量 变量的概述 变量是指内存中的一个存储区域,该区域要有自己的名称(变量名).类型(数据类型),该区域的数据可以在同一数据类型的范围内不断变化值 ...
- JAVA基础之变量(数据类型及其转换)
变量 变量的概念: 内存中的一个存储区域: 该区域的数据可以在同一类型范围内不断变化: 变量是程序中最基本的存储单元.包含变量类型.变量名和存储的值. 变量的作用: 用于在内存中保存数据. 使用变量注 ...
- Java 基本 语法变量与运算符
一.关键字与保留字 关键字(keyword)的定义和特点 定义:被 被Java 语言赋予了特殊含义,用做专门用途的字符串(单词) 特点: 关键字中所有字母都为 小写 官方地址: https://doc ...
- tensorflow tf.train.ExponentialMovingAverage().variables_to_restore()函数 (用于加载模型时将影子变量直接映射到变量本身)
variables_to_restore函数,是TensorFlow为滑动平均值提供.之前,也介绍过通过使用滑动平均值可以让神经网络模型更加的健壮.我们也知道,其实在TensorFlow中,变量的滑动 ...
- java语言语法--- Java标识符(标识符命名规则)、Java关键字、Java变量(变量的声明、赋值、使用)和常量(字符常量、字面常量)(包括Java字节码文件反汇编命令javap)
java语言语法- Java标识符.Java关键字.Java变量和常量(包括Java字节码文件反汇编命令javap) 1.标识符 (1)读音:biao zhi fu (2)什么是标识符? (摘自百度百 ...
- 这是什么操作?java中的变量竟然可以先使用后声明?
相信大家在看到标题之后,是疑惑的点进来看内容的. 在看到标题之后,大家肯定会怀疑,我赵某人用java写了好几年的代码了,还真就没见过java中的变量能先用在声明,今天就是进来看看你在没有声明变量的前提 ...
- java怎么申请变量_java怎么声明变量
在 Java 程序设计中,每个声明的变量都必须分配一个类型.声明一个变量时,应该先声明变量的类型,随后再声明变量的名字.下面演示了变量的声明方式. double salary; int age; Bo ...
- Java新职篇:声明一个变量
变量是Java程序的一个基本存储单元.变量由一个标识符,类型及一个可选初始值的组合定义.此外,所有的变量都有一个作用域,定义变量的可见性,生存期.接下来讨论变量的这些元素. 声明一个变量 在Java中 ...
- java的八种基本数据类型以及变量的声明
变量的使用 1.java定义变量的格式:数据类型 变量名 = 变量值; 2.说明: 变量必须先声明,后使用 同一个作用域内不能出现两个同名的变量 变量都定义在其作用域内,在作用域内,他是有效的,换句话 ...
最新文章
- Developerkit Link Develop Demo 环境配置指南
- Sql Injection 注入攻击
- openwrt satisfy_dependencies_for: Cannot satisfy the following dependencies for kmod: * 问题解决
- 自定义LocaleResolver实现页面中英文切换
- android应用程序开发_深圳app开发公司:跨平台应用程序开发工具有哪些?
- .NET中生成动态验证码
- python3调用java_Python3-JPype调用Java代码
- TiDB DM部署及使用
- 机器学习篇—大厂笔试题
- JavaScript刷新页面,不重复提交
- 在centos7中安装nodejs(npm )
- Error 1606 Could Not Access Network Location %SystemDrive%/inetpub/wwwroot/ 的错误解决方法
- vba调用二维码ocx
- 零基础如何学习视频制作?超全干货!手把手教你好上手的视频制作技巧
- 七大行星排列图片_太阳系八大行星大小及排列顺序
- 2022 社招 | 趋势科技 Linux开发 面经
- git fatal: The remote end hung up unexpectedly 错误
- 国产嵌入式操作系统发展思考 | 何小庆
- 马斯克:需要300T电池
- ajax实现登录成功后设置cookie,使用jquery的cookie实现登录页记住用户名和密码的方法...