u011359326
提问之星
采纳率99.8%
2015-12-17 13:40

java中为什么静态方法里面必须打印静态变量,

已采纳

java中为什么静态方法里面必须打印静态变量,
静态方法为什么无法打印普通变量

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

7条回答

  • weixin_29147833 weixin_29147833 6年前

    那说明你还是没弄清楚静态和非静态的创建时机,变量有类变量和实例变量,也就是静态变量和非静态变量,类加载的时候就加载类变量也可以说是类自己的变量,而实例变量只有在实例化的时候才被创建,所以在调用静态方法的时候还没有创建实例变量,你怎么能调用实例变量呢

    点赞 评论 复制链接分享
  • tabe123 霓为衣兮风为裳 6年前

    静态方法只能访问静态成员

    点赞 评论 复制链接分享
  • abcd1594433168 苍茫行者 6年前

    1.在静态方法中可以访问非静态字段,不过要是要实例化该类,只有实例化后,才会在堆中初始化实例变量
    2.静态变量是在类加载时初始化的,而静态方法也是这时加载到方法区,所以编译器允许静态方法访问

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 6年前
     所以问题的关键不是能不能访问,而是你必须指定实例,有了实例就可以访问
    还是上面的代码
    class A
    {
    public int i;
    static public void foo(A instence)
    {
        println(instence.i); //这样就可以了。
    }
    }
    调用
    A a =new A();
    A.foo(a);
    
    点赞 评论 复制链接分享
  • Bush_nanjing xiaoke_code 6年前

    静态方法属于这个类的,在这个类还没有实力化的时候,普通变量才在内存中有直了

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 6年前

    每个实例变量都有实例成员:
    class A
    {
    public int i;
    static void foo()
    {
    //如果可以访问i,你说到底访问a1的i还是a2的i
    }
    }

    A a1 = new A();
    a1.i = 1;
    A a2 = new A();
    a2.i = 2;

    点赞 评论 复制链接分享
  • oyljerry oyljerry 6年前

    静态方法属于类只能访问静态变量 成员变量属于实例

    点赞 评论 复制链接分享

相关推荐