在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