A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 晋一峰 中级黑马   /  2014-8-6 23:03  /  2840 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 晋一峰 于 2014-8-6 23:26 编辑

public class Cygnus{
    static int value = 9;   
    public static void main(String[] args) throws Exception{
        new Cygnus().printValue();
    }

    private void printValue(){
        int value = 69;
        System.out.println(this.value);
    }
}
程序的 运行结果为什么是 9  而不是 69呢?
static声明的  成员变量有什么特点??

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 淡定

查看全部评分

20 个回复

倒序浏览
本帖最后由 fxwb2005 于 2014-8-6 23:12 编辑

this是优先访问成员变量的吧……
回复 使用道具 举报
本帖最后由 晋一峰 于 2014-8-6 23:20 编辑
fxwb2005 发表于 2014-8-6 23:10
this是优先访问成员变量的吧……

好吧  我想多了- -
看了刚才有个回复 说    this不能访问静态。。。。
但是结果就是  访问先访问了成员变量啊
回复 使用道具 举报
这个this访问的是你定义的那个静态value,而不是那个成员函数中value....
回复 使用道具 举报
this对象指的是当前对象,而当前对象是class Cygnus
回复 使用道具 举报
如果没有this,你只输出value的话输出是9,当成员变量与局部变量同名时,默认访问局部变量;但是你用了this,this代指调用该方法的对象,this。vlaue就是该对象的value,那就是成员变量
回复 使用道具 举报
学习了!!!!!
回复 使用道具 举报
不用this就是69
回复 使用道具 举报
关键还是成员变量和局部变量的区别,this.value是成员变量的值9而不是局部变量value=69.
回复 使用道具 举报
这个考的不是static的用法吧,这个是this关键字的使用
回复 使用道具 举报
楼上解释的都不错
回复 使用道具 举报
this指的是本类,你加了this,打印的当然是9了,不加就是69
回复 使用道具 举报
this 可以看做谁引用就指向谁,this.value可以想做 new Cygnus()的value.
回复 使用道具 举报
this会访问相应方法的变量
回复 使用道具 举报
晋一峰 发表于 2014-8-6 23:19
好吧  我想多了- -
看了刚才有个回复 说    this不能访问静态。。。。
但是结果就是  访问先访问了成员变 ...

this.可以访问静态成员
回复 使用道具 举报
this访问的是你定义的那个静态value,而不是那个成员函数中value....
回复 使用道具 举报
this.Vaulue代表调用当前类对象的value值,且局部有默认掉局部,而static代表是类所有,用类名.value值就是69了
回复 使用道具 举报
printValue函数中的value是函数自己的局部变量,但是你打印的是this.value,打印的是类变量,所以是9.static声明的变量是静态的,你这个变量可以用类名直接访问。
回复 使用道具 举报
F@C 中级黑马 2014-8-8 14:44:47
19#
进来学习
回复 使用道具 举报
这个问题和Static无关吧,有没有Static都一样
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马