static使用之静态初始化块练习题

来源:8-10 Java 中的 static 使用之静态初始化块

Habit_formation

2016-03-06 17:49

static int age;

static{

 age=20;

}

public void show(){

 System.out.println(+age);

};

show()是普通方法为什么可以直接调用静态成员变量age???

写回答 关注

2回答

  • aliang702
    2016-03-06 18:04:27
    已采纳

    静态初始化块只在类加载时执行,且只会执行一次,而静态变量age实在静态初始化块中初始化的,而调用show方法的时候age已经被初始化了,所以可以使用age的值

    Habit_...

    好吧,刚刚又验证了一下,我从一开始就错了:普通方法本来就可以直接调用静态方法变量。 补充一下:就算age没有被初始化,用普通方法调用它时,也会返回一个null。 谢谢你的回答!

    2016-03-06 19:54:50

    共 1 条回复 >

  • 小LOVE宇
    2016-03-06 18:13:02
    你好:
     
         普通方法当然可以调用静态成员了,实例化过程我就不赘述了,楼上已经说得很好了。
     我想你混淆的地方是静态成员和静态方法相关的制约了。
     静态方法可以访问静态成员,但不可以访问成员变量(原因是在实例化静态方法的时候该成员变量还没有进行实例化,如果非要使用成员变量话的需要进行对象实例化再行使用成员变量)。
     ……
      SO,我简单分析你的问题是把静态方法和普通方法访问成员变量相关知识点混淆了。
      
      希望我的回答可以帮助到你朋友,更多优质答复请与留言,谢谢!


    Habit_...

    谢谢你的回答,我也是看到你说的第一句话才回头去验证的。结果发现,普通方法可以直接调用静态成员。 再次谢谢你帮我解答>_< !

    2016-03-06 19:56:59

    共 1 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530653 学习 · 6091 问题

查看课程

相似问题