int i = 3;public static void main(String []) {
   System.out.println(i);
}无法从静态上下文中引用非静态变量i的原因是“非静态成员变量只能通过类的对象实例来调用”这一规定吗?那么在内存中有没有相应的解释?比如说,此时i没有被分配地址?不过我感觉既然它被声明了被初始化了啊,内存中应该有地址了吧。。等等原因?希望有人讲下能否在内存中找到解释?

解决方案 »

  1.   

    你把int i=3;放到main中吧,程序的入口是那个静态方法main,此时还没有创建类的实例呢
      

  2.   

    没有实例化这个类时,i的地址是不存在的
    可以这么调用
    public class Test {
    int i = 5;
    public static void main(String [] args){

    System.out.println(new StringAndStringBuffer().i);
    }
    }
      

  3.   


    路过学习,只是这个StringAndStringBuffer()是什么意思 啊?
      

  4.   

    写错了 没改类名 不好意思啊 刚才测StringBuffer来的 应该是new Test()