什么是Java中的变量阴影?
在Java中,您可以声明三种类型的变量,即实例变量,静态变量和局部变量。
局部变量-在方法,构造函数或块内部定义的变量称为局部变量。该变量将在方法中声明和初始化,并且在方法完成后将销毁该变量。
实例变量-实例变量是类中但任何方法之外的变量。这些变量在实例化类时初始化。可以从该特定类的任何方法,构造函数或块内部访问实例变量。
类(静态)变量-类变量是在类内在任何方法之外使用static关键字声明的变量。
可变阴影
如果实例变量和局部变量在您每次在方法中打印(访问)时都具有相同的名称。将打印局部变量的值(隐藏实例变量)。
示例
在以下Java示例中,类FieldShadowingExample具有两个实例变量(名称,年龄)和一个方法(display())。
在该方法中,有两个与实例变量相同的变量(名称和类型)。
当您在方法中调用打印(访问)它们时,局部变量值将在实例值的阴影下打印。
public class FieldShadowingExample{
String name = "Krishna";
int age = 25;
public void display(){
String name = "Vishnu";
int age = 22;
System.out.println("Name: "+name);
System.out.println("age: "+age);
}
public static void main(String args[]){
new FieldShadowingExample().display();
}
}输出结果
Name: Vishnu age: 22
如果您仍然需要访问方法中实例变量的值(在这种情况下),则需要使用此关键字(或对象)访问它们,如下所示-
示例
public class FieldShadowingExample{
String name = "Krishna";
int age = 25;
public void display(){
String name = "Vishnu";
int age = 22;
System.out.println("Name: "+name);
System.out.println("age: "+age);
System.out.println("Name: "+this.name);
System.out.println("age: "+this.age);
}
public static void main(String args[]){
new FieldShadowingExample().display();
}
}输出结果
Name: Vishnu age: 22 Name: Krishna age: 25
热门推荐
10 宝宝新年祝福语大全简短
11 入学校简短祝福语
12 朋友节最简短祝福语
13 满月红包英文祝福语简短
14 生日祝福语简短独特格式
15 哥哥中考加油祝福语简短
16 简短中秋祝福语朋友结婚
17 爱小姨文案祝福语简短
18 朋友明天手术祝福语简短