public class Cygnus{
static int value = 9; //注意value是静态的成员变量
public static void main(String[] args) throws Exception{
new Cygnus().printValue();
} private void printValue(){
int value = 69;
System.out.println(this.value);
}
}这个程序会有下面哪种结果?
A. 编译错误
B. 打印9
C. 打印69
D. 运行时抛出异常

解决方案 »

  1.   

    这个题目是结果是69
    不明白的先了解下this是啥意思
    如果System.out.println(value);
    这时候输出的是局部变量value的值结果是9
      

  2.   

    this.value 指当前对像的value属性,,而int value = 69; 只是一个方法的变量
    所以打印this.vlaue 会是9,
      

  3.   

        private void printValue(){
            int value = 69;
            System.out.println(this.value);
        }
    }
    这里面得int vaule = 69算一个局部变量吧?
      

  4.   

    this.value不是指当前对象的属性,value是static的
      

  5.   


    结果是9是对的。。static变量是在这个class第一次加载的时候就初始化,且在一个虚拟机中只初始化这一次。在java语言中,不建议使用this.value这种方式来引用,但也不是绝对禁止的。。所以是9
      

  6.   

    不建议用this?为什么?下面的算什么?public class User {
    private String user;
    private String password; public String getUser() {
    return user;
    } public void setUser(String user) {
    this.user = user;
    } public String getPassword() {
    return password;
    } public void setPassword(String password) {
    this.password = password;
    }
    }
      

  7.   

    结果是9,此题考察的是this的用法,static在这里只是起到了疑惑的作用……我是新手,请大家多多指教
      

  8.   

    楼上说的正确,我测试了一下,static确实起到了迷惑的作用,System.out.println(this.value);
    打印的是当前对象的属性,不用多说,当前对象引用的时候,已经初始化为9.所以打印出9了
    另外,大家可以测试一下,去掉static结果是一样的,这也就说明了楼上的正确、
      

  9.   

    this.value指的是当前对象的属性,而在本题中所有的实例都公用一个类变量value
    static在本题中没什么意思的
    就算是去掉static 一样是打印9;
      

  10.   

    this代表的是本实例,但是不代表这个类。举个例子吧
    new 类();这个时候这个this才会起到作用。
      

  11.   


    晕 static的就不是对象的属性了?什么逻辑啊,要你这么理解的话是不是Arrays的几个静态方法都不是Arrays类的方法了?
      

  12.   

    只能说static我们可以不通过实例化类来调用,并不是说它本身就不是类里面的属性和方法了
      

  13.   

    结果是9,因为this是指实例化的一个对象。虽然加static是类的变属性,但也是实例的。所以,是9
      

  14.   

    this 是持有自身的引用 static 方法在类加载时被调用 所以结果为9