在 Java 中的变量 章节中,我们知道 Java 中的变量可以分为三大类: 局部变量、实例变量 和 静态变量。
而在 Java 中变量的作用域 中,我们知道 Java 中的变量变量作用域是以花括号 {}
来划分的。
那我有一个疑问,下面的代码的输出结果是什么呢?
JavaTester.java
class JavaTester { // 实例变量 private int value = 10; void run() { // 定义一个局部变量 int value = 40; System.out.println("Value of Instance variable :" + this.value); System.out.println("Value of Local variable :" + value); } public static void main(String args[]) { JavaTester obj1 = new JavaTester(); obj1.run(); } }
这应该算是一个非常简单的送分题了。
编译运行上面的代码,输出结果如下
[yufei@www.twle.cn java]$ javac JavaTester.java && java JavaTester Value of Instance variable :10 Value of Local variable :40
那你知道为什么结果会是如此吗?
在 Java 中,方法中声明和定义的的变量会隐藏类中定义的同名的实例变量。
在这个方法内部,直接使用变量名引用的就是局部变量,这也是为什么后面一个语句输出的结果为 40
。
如果要访问被局部变量隐藏的实例变量,这需要通过 this
关键字,就像前一个 println()
语句中使用的那样。
目前尚无回复