class Test{   int i = 0;    public static void main(String[] args){
int i = 2;
System.out.println(i);
   }
}输出的局部变量i  而不是全局变量i  为什么?

解决方案 »

  1.   

    局部变量隐藏了实例变量,而且实例变量必须通过对象引用来调用例如:new Test().i;
    或者
    Test t = new Test();
    t.i
      

  2.   

    变量作用域的原因  java遵循小作用域大于大作用域的原则   会先输出局部变量 而不是成员变量  如果想输出成员变量用this.i
      

  3.   

    补充一下子,你的程序里面main()是static方法是不能直接调用实例变量的
    要用
    new Test().i;
    或者
    Test t = new Test();
    t.i
    这样才能调用实力变量i
      

  4.   

    zhaoxinmao() ( ) 信誉:100    Blog 耐心,hehe
      

  5.   

    补充一下子,你的程序里面main()是static方法是不能直接调用实例变量的
    要用
    new Test().i;
    或者
    Test t = new Test();
    t.i
    这样才能调用实力变量i楼上这个是正解
      

  6.   

    變量優先級得考慮進去,何況,你的所謂全局變量是一般的全局變量,根本不會讓MAIN内的變量受到影響,所以,使局部變量的結果。明白沒有!接分ING
      

  7.   

    一个是方法的局部变量  一个类的实列变量```
    STATIC 方法不能直接调用实列变量的!
      

  8.   

    访问类变量
    class Test{   static int i = 0;    public static void main(String[] args){\
           System.out.println(i);
           int i = 2;
       }
    }
      

  9.   

    访问类变量
    class Test{   static int i = 0;    public static void main(String[] args){\
           System.out.println(i);
           int i = 2;
       }
    }
      

  10.   

    是不是 this.i就能输出0了?
      

  11.   

    类变量和方法变量的区别
    类变量需要实例化对象才能引用,如果类变量是static的,也可以直接用 类名.变量名 访问
    方法变量覆盖实例变量,和全局变量和局部变量一样
      

  12.   

    补充一下子,你的程序里面main()是static方法是不能直接调用实例变量的
    要用
    new Test().i;
    或者
    Test t = new Test();
    t.i
    这样才能调用实力变量i
    正确