本帖最后由 tk_peter 于 2010-08-15 15:22:31 编辑

解决方案 »

  1.   

    放在main方法外部a也是非静态变量啊!
      

  2.   

    你在main()方法外创建的A对象是一个成员变量。
    而在main()方法中创建的是一个局部变量,不一样的。
      

  3.   


    //首先你要明白一点,static方法不依赖于实例,不通过实例也可以调用,static方法中只能引用类变量(也就是static变量)和局部变量,想一想在static调用一个未实例化的变量会不会出问题!。
          
          public static void main(String[] args) {        A a = new A();        System.out.println(a.i);
        }
      

  4.   

    没有变量可以直接调用,静态变量本质上是通过jvm实例化类之后的调用,实例化过程由虚拟机管理,单例状态,本质上还是通过类的调用方式实现
      

  5.   

    同1楼,你在静态区域new出来的就能引用,在main外new的话,new出来的对象还是处在非静态区域,仍然是非静态变量,所以仍旧不能直接引用,不知道这样能理解么?