黑马程序员技术交流社区

标题: 关于static的问题 [打印本页]

作者: 晋一峰    时间: 2014-8-6 23:03
标题: 关于static的问题
本帖最后由 晋一峰 于 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声明的  成员变量有什么特点??


作者: fxwb2005    时间: 2014-8-6 23:10
本帖最后由 fxwb2005 于 2014-8-6 23:12 编辑

this是优先访问成员变量的吧……
作者: 晋一峰    时间: 2014-8-6 23:19
本帖最后由 晋一峰 于 2014-8-6 23:20 编辑
fxwb2005 发表于 2014-8-6 23:10
this是优先访问成员变量的吧……

好吧  我想多了- -
看了刚才有个回复 说    this不能访问静态。。。。
但是结果就是  访问先访问了成员变量啊
作者: 반야_바라_밀    时间: 2014-8-6 23:25
这个this访问的是你定义的那个静态value,而不是那个成员函数中value....
作者: 黑马_java猿    时间: 2014-8-7 09:19
this对象指的是当前对象,而当前对象是class Cygnus
作者: lcl    时间: 2014-8-7 09:22
如果没有this,你只输出value的话输出是9,当成员变量与局部变量同名时,默认访问局部变量;但是你用了this,this代指调用该方法的对象,this。vlaue就是该对象的value,那就是成员变量
作者: 周峰峰    时间: 2014-8-7 09:33
学习了!!!!!
作者: star5603    时间: 2014-8-7 10:03
不用this就是69
作者: liubea    时间: 2014-8-7 15:15
关键还是成员变量和局部变量的区别,this.value是成员变量的值9而不是局部变量value=69.
作者: 吥洅ㄨ错过ㄩ    时间: 2014-8-7 19:08
这个考的不是static的用法吧,这个是this关键字的使用
作者: sunny~    时间: 2014-8-7 20:15
楼上解释的都不错
作者: lspooooo    时间: 2014-8-7 20:28
this指的是本类,你加了this,打印的当然是9了,不加就是69
作者: huoshao008    时间: 2014-8-7 20:39
this 可以看做谁引用就指向谁,this.value可以想做 new Cygnus()的value.
作者: liujingnan    时间: 2014-8-7 23:10
this会访问相应方法的变量
作者: justin1258    时间: 2014-8-8 10:01
晋一峰 发表于 2014-8-6 23:19
好吧  我想多了- -
看了刚才有个回复 说    this不能访问静态。。。。
但是结果就是  访问先访问了成员变 ...

this.可以访问静态成员
作者: 18334705181    时间: 2014-8-8 10:18
this访问的是你定义的那个静态value,而不是那个成员函数中value....
作者: 南柯一梦    时间: 2014-8-8 10:45
this.Vaulue代表调用当前类对象的value值,且局部有默认掉局部,而static代表是类所有,用类名.value值就是69了
作者: 冒牌高手    时间: 2014-8-8 10:53
printValue函数中的value是函数自己的局部变量,但是你打印的是this.value,打印的是类变量,所以是9.static声明的变量是静态的,你这个变量可以用类名直接访问。
作者: F@C    时间: 2014-8-8 14:44
进来学习
作者: liqi    时间: 2014-8-8 22:16
这个问题和Static无关吧,有没有Static都一样




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2