Java 中的实例变量隐藏

yufei       6 年, 1 月 前       747

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() 语句中使用的那样。

目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.